0

新しいメッセージを確認するために、1 時間に 1 回Web サービスをポーリングする必要があります。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"実際には Webservice ではなく PageMethod です。

私が理解していないのは、上記の関数を呼び出すために1時間待機するjqueryで「ループ」を作成する方法です。

では、この関数を 1 時間に 1 回だけ呼び出すコードを作成するにはどうすればよいでしょうか。

4

5 に答える 5

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呼び出しが終了すると(成功かエラーかに関係なく)、1時間後に関数を再度実行するようにスケジュールされます(ただし、Webの世界では1時間はかなりの時間であることに注意してください) 、承認が期限切れになる可能性がありますなど)。

于 2013-01-14T15:29:25.360 に答える
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 が最適な方法です。明らかに、Web ページがまだ開いている場合は、1 時間後にのみポーリングされます。

$(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 に答える