我有网络功能:
var timeout=60000;
setInterval(function() {
$.ajax({
url: "/xheresfm/getstatus.php",
data: {
},
success: function( data ) {
var obj = jQuery.parseJSON(data);
timeout=obj.refresh;
}
})
}, timeout);
});
timeoit总是60000,但是obj.refresh没有给出空结果,我无法弄清楚它不起作用。
例如,如果obj.refresh是9999999,则超时仍为60000
答案 0 :(得分:1)
您的代码无法正常工作的原因是您正在使用异步调用,在AJAX调用之前执行timout方法。您可以使用以下代码克服此问题:
var timeout=60000;
var func = function() {
$.ajax({
url: "/xheresfm/getstatus.php",
data: {
},
success: function( data ) {
var obj = jQuery.parseJSON(data);
timeout=obj.refresh;
setTimeout(func, timeout);
}
})
}
func();
希望这有帮助。
答案 1 :(得分:0)
如果性能问题你不应该使用间隔原因 - 它会调用和调用,调用... call,loop,loooop ^^ - 不是一个好主意。您如何看待我的方法?
var timeout = 60000;
var refreshStatus = function() {
$.ajax({
url: "/xheresfm/getstatus.php",
success: function( data ) {
var obj = jQuery.parseJSON(data);
//do stuff on success
},
done: function () {
setTimeout(function () {
refreshStatus();
}, timeout);
}
})
}
refreshStatus();