如何使用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请求