带计时器的 Jquery/Ajax 调用

IT技术 javascript jquery ajax timer setinterval
2021-02-09 22:59:18

我有一个 php 页面,可以从数据库中回显出行。我想每 30 秒通过 jquery/ajax 调用它。但我也希望能够随时调用页面,这样如果我通过表单添加记录,一旦表单提交,我希望页面通过调用 ajax 来立即更新结果。谁能指出我正确的方向或提供一些基本代码,以便我可以尝试解决这个问题?对 jquery/ajax 来说还是很新的。

1个回答

如果你想在计时器上设置一些东西,你可以使用 JavaScript 的setTimeoutsetInterval方法:

setTimeout ( expression, timeout );
setInterval ( expression, interval );

其中expression是一个函数,timeoutinterval是以毫秒为单位的整数。setTimeout运行计时器一次并运行expression一次,而 setInterval 将在expression每次interval通过运行

所以在你的情况下,它会像这样工作:

setInterval(function() {
    //call $.ajax here
}, 5000); //5 seconds

就 Ajax 而言,请参阅 jQuery 的ajax()方法如果您运行一个时间间隔,则没有什么可以阻止您从ajax()代码中的其他地方调用相同的内容


如果您想要的是每隔 30 秒运行一次间隔,直到用户启动表单提交......然后在此之后创建一个新的间隔,这也是可能的:

setInterval() 返回一个整数,它是间隔的 ID。

var id = setInterval(function() {
    //call $.ajax here
}, 30000); // 30 seconds

如果将该 ID 存储在变量中,则可以调用clearInterval(id)它来停止进程。

然后,您可以setInterval()在完成 ajax 表单提交后重新实例化调用。

那么您想要的是每隔 30 秒运行一次间隔,直到用户启动表单提交......然后在此之后创建一个新的间隔?这也是可能的。setInterval()返回一个整数,它是间隔的 ID。如果将该 ID 存储在变量中,则可以调用clearInterval(id)它来停止进程。然后,您可以setInterval()在完成 ajax 表单提交后重新实例化调用。
2021-03-21 22:59:18
感谢您的回复!所以你说如果我使用上面的代码每 5 秒刷新一次 ajax 调用然后在同一页面上我有一个表单有人填写并提交,一旦完成添加记录我可以调用上面相同的 setInterval 函数,它不会有 2 个该函数的实例同时运行吗?
2021-03-24 22:59:18