如何使用JQuery每1秒发送一次Ajax请求?
如何使用JQuery每1秒发送一次Ajax请求?
您可能不希望每秒都发送一个请求,正如大卫已经指出的那样。
因此,使用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);
显然在函数myAjaxCall()中你将使用jquery做所有ajax的东西。
如果使用setInterval方法,可能会破坏浏览器,因为setInterval不等待ajax函数完成,如果服务器运行缓慢或用户连接速度低,这可能导致同时运行多个ajax请求