【问题标题】:Jquery/Ajax call with timer带计时器的 Jquery/Ajax 调用
【发布时间】:2010-12-28 00:25:58
【问题描述】:

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

【问题讨论】:

    标签: javascript jquery ajax timer setinterval


    【解决方案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() method。如果你运行一个间隔,没有什么能阻止你从代码中的其他地方调用相同的ajax()


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

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

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

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

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

    【讨论】:

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