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