$.ajax({
url: "data.php"
}).done(function(data) {
//code
});
如何在jQuery超时函数中包装它,例如每2秒发送一次ajax请求。
答案 0 :(得分:4)
如果将其包装在setInterval
中,则存在向服务器发送大量请求的风险,可能无法将它们全部恢复原状。在回调中添加timeout
:
function runAjax() {
$.ajax({
url: "data.php"
}).done(function(data) {
//code
setTimeout(runAjax, 2000); //Run it again in 2 sec
});
}
runAjax(); //I suppose we should start the AJAX :D
答案 1 :(得分:1)
我会做这样的事情:
var ajax = null;
function callAjax()
{
if(ajax != null)
ajax.abort();
ajax = $.ajax({
url: "data.php"
}).done(function(data) {
//code
});
setTimeout(callAjax, 1000); // Every 1 second
}
callAjax();
此代码每1秒执行一次Ajax调用。如果另一个请求正在运行,它将在运行另一个请求之前将其终止。
更好的方法是使用长轮询: http://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery
答案 2 :(得分:0)
您可以使用setInterval。
var xhr;
setInterval(
function runAjax() {
if(xhr) {
xhr.abort();
}
xhr = $.ajax({
url: "data.php"
}).done(function(data) {
});
}, 2000
)
尝试这样。