函数中定义的jquery ajax和setinterval

函数中定义的jquery ajax和setinterval,jquery,Jquery,我有一个不断发送请求的函数,但是时间间隔需要根据函数返回的内容进行更改。 调用脚本,我在JSON变量cas interval中以秒为单位返回脚本,并且需要更改此函数的interval变量。有人能告诉我怎么做吗?如果事情没有回报,那就让波普·阿达维克再发一次 非常感谢 function dotaz(){ //var cas $.ajax({ type: "GET", url: "loader.php", data: "promenna=1&p

我有一个不断发送请求的函数,但是时间间隔需要根据函数返回的内容进行更改。 调用脚本,我在JSON变量cas interval中以秒为单位返回脚本,并且需要更改此函数的interval变量。有人能告诉我怎么做吗?如果事情没有回报,那就让波普·阿达维克再发一次

非常感谢

function dotaz(){
     //var cas
    $.ajax({
     type: "GET",
     url: "loader.php",
     data: "promenna=1&promt=3&p="+Math.random(),
     dataType: "json",
     success: function(jdata){
        $("#loader").html(jdata.promenna);
          if(jdata.chyba == 0){
           $("#loader").css({'background-color' : '#B90000'});
          }
          if(jdata.chyba == 1){
           $("#loader").css({'background-color' : 'green'});
          }
          var cas = jdata.cas*1000;
     },
     error: function (xhr, ajaxOptions, thrownError){     
                    if(xhr.status == 404) {
                     $("#loader").html("Soubor nenalezen");
                    }
                    if(xhr.status == 400) {
                     $("#loader").html("Špatný požadavek");
                    }
                    if(xhr.status == 403) {
                     $("#loader").html("Přístup zamítnut");
                    }
                    if(xhr.status == 500) {
                     $("#loader").html("Chyba serveru");
                    }
     }   
     });
     setTimeout(function(){dotaz();}, 2000);   
   }   
   dotaz();
我需要

setTimeout(function(){dotaz();}, cas);
对不起,是吗

   function dotaz(){
     //var cas;
     $.ajax({
     type: "GET",
     url: "loader.php",
     data: "promenna=1&promt=3&p="+Math.random(),
     dataType: "json",
     success: function(jdata){
        $("#loader").html(jdata.promenna);
          if(jdata.chyba == 0){
           $("#loader").css({'background-color' : '#B90000'});
          }
          if(jdata.chyba == 1){
           $("#loader").css({'background-color' : 'green'});
          }
          var cas = jdata.cas*1000;
          setTimeout(function(){dotaz();}, cas);
     },
     error: function (xhr, ajaxOptions, thrownError){     
                    if(xhr.status == 404) {
                     $("#loader").html("Soubor nenalezen");
                    }
                    if(xhr.status == 400) {
                     $("#loader").html("Špatný požadavek");
                    }
                    if(xhr.status == 403) {
                     $("#loader").html("Přístup zamítnut");
                    }
                    if(xhr.status == 500) {
                     $("#loader").html("Chyba serveru");
                    }
                    setTimeout(function(){dotaz();}, 5000);
     }   
     });   
   }   
   dotaz()

您试图创建一个循环,在ajax返回后,您希望在您的案例中有一个2000毫秒的超时。我会这样做:

function dotaz(cas){
     setTimeout(function(){
         $.ajax({
         type: "GET",
         url: "loader.php",
         data: "promenna=1&promt=3&p="+Math.random(),
         dataType: "json",
         success: function(jdata){
            $("#loader").html(jdata.promenna);
              if(jdata.chyba == 0){
               $("#loader").css({'background-color' : '#B90000'});
              }
              if(jdata.chyba == 1){
               $("#loader").css({'background-color' : 'green'});
              }
              var new_cas = jdata.cas*1000;
              dotaz(new_cas);
         },
         error: function (xhr, ajaxOptions, thrownError){     
                        if(xhr.status == 404) {
                         $("#loader").html("Soubor nenalezen");
                        }
                        if(xhr.status == 400) {
                         $("#loader").html("Špatný požadavek");
                        }
                        if(xhr.status == 403) {
                         $("#loader").html("Prístup zamítnut");
                        }
                        if(xhr.status == 500) {
                         $("#loader").html("Chyba serveru");
                        }
                        setTimeout(function(){dotaz();}, 5000);
         }   
         });
      }, cas);
   }   
   dotaz(1000)

在您执行请求之前请先超时

非常感谢,它看起来功能正常。 我只是想问,脚本等待响应的时间有多长。假设我有一个执行50s-Sleep(50)的脚本,Ajax将始终等待一个php文件的回复,该文件已经给出了重复的时间和时间。我仍然需要处理,当需要在某个时间从脚本获得响应时,可能需要30秒来再次调用函数,并在某处写入popřípadnětimeout错误

代码:

<script>
   function dotaz(idecko,cas){
     setTimeout(function(){
     $.ajax({
     type: "GET",
     url: "loader.php",
     data: "promenna="+idecko+"&promt=3&p="+Math.random(),
     dataType: "json",
     success: function(jdata){
        $("#hlavicka"+idecko).html(jdata.promenna);
        $("#blok"+idecko).html(jdata.data);
        if(jdata.stav == 0) { $("#box"+idecko).removeClass('err war').addClass('rdy'); }
        if(jdata.stav == 1) { $("#box"+idecko).removeClass('err rdy').addClass('war'); }
        if(jdata.stav == 2) { $("#box"+idecko).removeClass('rdy war').addClass('err'); }

        var new_cas = jdata.cas*1000;
        dotaz(idecko,new_cas);
     },
     error: function (xhr, ajaxOptions, thrownError){

                    if(xhr.status == 404) {
                     $("#paticka"+idecko).html("Soubor nenalezen");
                    }
                    if(xhr.status == 400) {
                     $("#paticka"+idecko).html("Špatný požadavek");
                    }
                    if(xhr.status == 403) {
                     $("#paticka"+idecko).html("Přístup zamítnut");
                    }
                    if(xhr.status == 500) {
                     $("#paticka"+idecko).html("Chyba serveru");
                    }                  
                    setTimeout(function(){dotaz(idecko);}, cas);
     }   
     });
     }, cas);


        $('#info'+idecko).hover(
          function () {
           $('#udalost'+idecko).css({'display' : 'block'});
           },
          function () {
           $('#udalost'+idecko).css({'display' : 'none'});
           }
        );

   }   

  </script>

功能dotaz(idecko,cas){
setTimeout(函数(){
$.ajax({
键入:“获取”,
url:“loader.php”,
数据:“promenna=“+idecko+”&promt=3&p=“+Math.random(),
数据类型:“json”,
成功:函数(jdata){
$(“#hlavicka”+idecko.html(jdata.promenna);
$(“#blok”+idecko).html(jdata.data);
if(jdata.stav==0){$(“#box”+idecko).removeClass('err war').addClass('rdy');}
if(jdata.stav==1){$(“#box”+idecko).removeClass('err rdy').addClass('war');}
if(jdata.stav==2){$(“#box”+idecko).removeClass('rdy war').addClass('err');}
var new_cas=jdata.cas*1000;
多塔兹(新墨西哥州艾德科);
},
错误:函数(xhr、ajaxOptions、thrownError){
如果(xhr.status==404){
$(“#paticka”+idecko).html(“Soubor-nenalezen”);
}
如果(xhr.status==400){
$(“#paticka”+idecko).html(“ýpatnýpožadavek”);
}
如果(xhr.status==403){
$(“#paticka”+idecko).html(“Přístup zamítnut”);
}
如果(xhr.status==500){
$(“#paticka”+idecko).html(“Chyba serveru”);
}                  
setTimeout(函数(){dotaz(idecko);},cas);
}   
});
},中科院);
$('#info'+idecko)。悬停(
函数(){
$('udalost'+idecko).css({'display':'block'});
},
函数(){
$('udalost'+idecko).css({'display':'none'});
}
);
}   
并将此脚本称为:

<script>dotaz(2,0);</script>
dotaz(2,0);
2用于div id 2,0用于将第一个超时设置为0以立即执行