使用setInterval使ajax调用多次运行

时间:2013-10-31 17:25:46

标签: jquery asp.net ajax setinterval

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

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

ajax调用然后使用日期和时间

更新模态div层中的div

以上所有内容在页面最初加载时都有效。

但是我希望它每隔5秒左右做一次这个功能 - 但它只做一次。

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

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

没有我给出任何代码(假设我的代码现在是废话)大声笑可以这样做吗?

基本上,我希望页面只需显示通过调用ajax函数每5秒更新一次div 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 include的链接。

再次感谢您的回复 - 并且一如既往地会得到任何帮助。

干杯

3 个答案:

答案 0 :(得分:0)

要么这样做:

function update() {
   //update logic belongs here

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

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

或者像这样:

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

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

答案 1 :(得分:0)

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

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

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

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

答案 2 :(得分:0)

使用你的回复和来自另一个帖子的答案的组合。

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

还结合了文件就绪=结果!!!!

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