【问题标题】:make ajax call to run multiple times with setInterval使用 setInterval 进行 ajax 调用以多次运行
【发布时间】:2013-10-31 17:25:46
【问题描述】:

我有一个 vb.net aspx 页面,它在 document.ready 上加载了一个模态 div。

然后我有一个函数,它基本上对返回日期/时间的 aspx 页面进行 ajax 调用。

ajax 调用然后用日期和时间更新模态 div 层中的 div

当页面初始加载时,上述所有操作都有效。

但我希望它每 5 秒左右执行一次该功能 - 但它只执行一次。

所以我想总结的是...... - 页面加载 - document.ready 显示模态 div(这有效) - 然后 setInterval 调用 ajax 函数到我返回 date.time 的页面(这工作 1 次)

  • 然后当模态 div 显示时,在页面上时,setInterval 继续执行上述行(这不起作用)

没有我提供任何代码(假设我的代码现在是垃圾)大声笑这可以做到吗?

基本上,我希望页面通过调用 ajax 函数仅显示每 5 秒更新一次 divs innetText 的日期/时间。

如果我们可以让它发挥作用,我将对此进行扩展:)

再次感谢任何帮助:)

干杯

更新 04-11-2013 10:04

我刚刚尝试将 setInterval 调用放在文档就绪块中 - 甚至向我调用的函数添加了一个警报,以查看它是否实际上多次调用它 - 但它没有 - 仍然只有一次。

这里是代码。

所以在脚本标签的开头我有

<script language="javascript" type="text/javascript">
    $(document).ready(function () {
        showPayWait();
        setInterval(processPayment(), 5000);
    });        

    /* Function to Process Payment via AJAX calls so we can update the modal div */
    function processPayment() {

        // show modal div first
        var OrderIDResponse = "";
        var lngOrderID = "";
        UpdateMessage('Assigning an OrderID');

        // Get Ajax Response into variable.
        OrderIDResponse = getOrderID();

        // Parse it to the actual text we need i.e. the orderid
        lngOrderID = OrderIDResponse['responseText'];

        if (!lngOrderID == "") {
            UpdateMessage("OrderID Assigned: " + lngOrderID);

        }
        else {
            UpdateMessage('Unable to assign an OrderID ' + lngOrderID);
        }


    }

    // -- Generic function to update the divInfo Element
    function UpdateMessage(msg) {
        document.getElementById("divInfo").innerText = msg;
    }
</script>

只是想我应该指出这段代码所在的页面是母版页的内容页面

母版页只有最新的 jQuery 包含的链接。

再次感谢您的回复 - 我们将一如既往地收到任何帮助。

干杯

【问题讨论】:

  • 嗯,解决方案是setTimeoutsetInterval。如果没有看到你的代码,我认为没有人能够帮助找出你做错了什么。
  • 您好-感谢您的回复-我这次更新了原始问题,包括代码

标签: jquery asp.net ajax setinterval


【解决方案1】:

要么这样做:

function update() {
   //update logic belongs here

   setTimeout(update, 5000 /*5secs*/);
}

setTimeout(update, 5000 /*5secs*/);

或者像这样:

function update() {
   //update logic belongs here
}

setInterval(update, 5000 /*5secs*/);

【讨论】:

  • 您好 - 感谢您的回复 - 这次我更新了原始问题,包括代码 :)
【解决方案2】:

您需要在文档准备功能中使用setInterval,如下所示:

$(document).ready(function() {
    setInterval(doAjax, 5000);
});

function doAjax() {
    // Call server-side resource here via AJAX
}

注意:如果您想要触发 5 秒间隔的其他内容,请将 setInterval(doAjax, 5000); 调用放在您想要的任何选择器或单击事件处理程序中。显然也不需要用 jQuery 来完成,但这是我能想到的最快的例子。

【讨论】:

  • 您好-感谢您的回复-我这次更新了原始问题,包括代码
【解决方案3】:

结合您的回复和来自另一个线程的答案来解决问题。

我从 setInterval WITH 括号 () 中调用函数,而不仅仅是函数引用。

还结合文档准备好=结果!!!!

我在另一个帖子中提到的答案是JS setInterval executes only once

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    相关资源
    最近更新 更多