如何使用JQuery每1秒发送一次Ajax请求?
正如David已经指出的那样,您可能不希望每秒发送一次请求。
因此,使用setInterval
是一个不好的主意。
相反,考虑像这样做:
function doAjax() {
$.ajax({
...
complete: function() {
setTimeout(doAjax,1000); //now that the request is complete, do it again in 1 second
}
...
});
}
doAjax(); // initial call will start rigth away, every subsequent call will happen 1 second after we get a response
您可以使用setInterval,但setInterval不是jQuery的一部分:
setInterval(function() {
$.get(...);
}, 1000);
1秒的时间间隔已经足够小,你可能会在收到第一个请求的响应之前开始第二个请求。因此,你应该在接收到上一个请求后再开始下一个请求(参见Martin Jespersen的建议),或者将前一个$.ajax
请求的jqXHR
保存在变量中,并使用它来中止前一个请求(请参见这里的示例)。
setInterval(myAjaxCall, 1000);