0

我需要每小时轮询一次网络服务以检查新消息。我想用 jQuery 来做。ajax 调用是这样的:

function checkForMessages(rowid) {
$.ajax({
    type: "POST",
    url: "MyPage.aspx/CheckForMessages",
    contentType: "application/json; charset=utf-8",
    data: "{'currentMessages': '" + cMessages+ "'}",
    dataType: "json",
    success: function (msg) {

    },
    error: function (response) {

    }
});
}

url: "MyPage.aspx/CheckForMessages"实际上是一个PageMethod而不是Webservice。

我不明白的是如何用 jquery 制作“循环”,等待一个小时来调用上述函数。

那么我怎样才能让代码每小时只调用一次这个函数呢?

4

5 回答 5

0
window.setIntervall(function, delay);

以毫秒为单位的延迟。

但是,使用这种方法,站点必须始终处于打开状态。您可以使用服务器发送事件将消息从服​​务器推送到您的站点,但这需要大量工作..

于 2013-01-14T15:24:24.640 回答
0

setInterval()...

http://www.w3schools.com/jsref/met_win_setinterval.asp

setInterval(checkForMessages, 3600000);
于 2013-01-14T15:25:05.650 回答
0

window.setInterval 是最好的方法,如果网页仍然打开,显然它只会在一个小时后轮询。

$(function () {
    setInterval(myPollingMethod, 3600000);
});

function myPollingMethod()
{
  //this will repeat every 1 hour (3600 seconds)
}

如果要停止轮询,也不要忘记调用 window.clearInterval 方法。

于 2013-01-14T15:25:18.293 回答
0
function checkForMessages(rowid) {
$.ajax({
    type: "POST",
    url: "MyPage.aspx/CheckForMessages",
    contentType: "application/json; charset=utf-8",
    data: "{'currentMessages': '" + cMessages+ "'}",
    dataType: "json",
    success: function (msg) {
        //do stuff here
        setTimeout(function(rowid) {checkForMessages(rowid);},3600000);
    },
    error: function (response) {

    }
});
}
于 2013-01-14T15:26:29.713 回答
0

您可以使用setTimeout函数来实现所需的结果:

function checkForMessages(rowid) {
    $.ajax({
        type: "POST",
        url: "MyPage.aspx/CheckForMessages",
        contentType: "application/json; charset=utf-8",
        data: "{'currentMessages': '" + cMessages+ "'}",
        dataType: "json",
        success: function (msg) {
            ...
        },
        error: function (response) {
            ...
        },
        complete: function() {
            ...
            setTimeout(function() { checkForMessages(rowid); }, 3600000);
        }
    });
}

这样,当你第一次调用你的函数并且你的$.ajax调用完成时(不管它是成功还是错误),它将安排在一小时后再次执行该函数(但请记住,一小时在网络世界中是很多时间,授权可能会过期等)。

于 2013-01-14T15:29:25.360 回答