$.ajax({
url: "data.php"
}).done(function(data) {
//code
});
如何将其包装在 jQuery 超时函数中,例如每 2 秒发送一个 ajax 请求?
如果将其包装在 中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
我会做这样的事情:
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
你可以使用setInterval。
var xhr;
setInterval(
function runAjax() {
if(xhr) {
xhr.abort();
}
xhr = $.ajax({
url: "data.php"
}).done(function(data) {
});
}, 2000
)
试试这样。