2011-03-15 636 views
4

如何使用JQuery每隔1秒发送一次Ajax请求?在功能myAjaxCall显然如何使用JQuery每1秒发送一次Ajax请求?

setInterval(function() { 
    $.get(...); 
}, 1000); 
+5

这是很有可能的,你不能。请求完成时间超过1秒的情况非常普遍。所以如果你试图这样做,你几乎肯定会得到一长串请求,等待一个可用的连接,并且它们以不同的顺序返回(创建一个竞争条件)。您可能想要将一个请求作为回调的一部分发送回前一个请求。 – Quentin 2011-03-15 10:10:51

回答

6

可以使用的setInterval,但setInterval的北京时间的jQuery不是一部分。

0
setInterval(myAjaxCall, 1000); 

(),你会做你的东西阿贾克斯与jQuery:

+0

10000都是10秒 – felixsigl 2011-03-15 10:06:13

+0

哎唷,刚刚编辑! – 2011-03-15 10:07:12

17

您可能不想每隔一秒发送一次请求,因为大卫已经注意到了。

因此,使用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 
1

间隔1秒足够小,它可以是你收到响应第一请求之前,你会开始第二次请求。因此,您应该启动下一个请求接收前一个(见马丁耶斯佩森的建议)后或从以前$.ajax申请保存jqXHR在一个变量,并用它来中止以前的要求(见here为例)

0

如果使用的setInterval方法,你可以粉碎浏览器,因为setInterval的不是等着AJAX功能来完成,如果服务器运行缓慢或用户的连接速度慢,这可能是导致运行在多个Ajax请求同样的tme