0

jquery ajaxリクエストが一定時間以上続いているかどうかを知ることはできますか? リクエストが 10 秒間継続している場合は、サイトのユーザーにリロードして再試行するように促したいのですが、リクエストを満たすドキュメントが見つかりません。

4

3 に答える 3

5

timeout プロパティを設定して、エラー ハンドラ パラメータを取得してみてください。可能な値は次のとおりです。

"timeout", "error", "abort", and "parsererror"

$.ajax({
    url: "/ajax_json_echo/",
    type: "GET",
    dataType: "json",
    timeout: 1000,
    success: function(response) { alert(response); },
    error: function(x, t, m) {
        if(t==="timeout") {
            alert("got timeout");
        } else {
            alert(t);
        }
    }
});​
于 2013-11-01T15:49:45.453 に答える
2

したがって、サイト内のすべての ajax リクエストに対して...次のようなことを行う必要があります...

$.ajaxSetup({
     beforeSend: function(jqXHR, settings){

          /* Generate a timer for the request */
          jqXHR.timer = setTimeout(function(){

               /* Ask the user to confirm */
               if(confirm(settings.url + ' is taking too long. Cancel request?')){
                   jqXHR.abort();
               }
          }, 10000);
     }
});
于 2013-11-01T16:03:20.483 に答える
1

タイムアウトを設定し、ajax 呼び出しが完了したらキャンセルします。

var timer = setTimeout(function() {
    alert('Too long!');
}, 10000);

$.getJSON(url, function() {
   clearTimeout(timer);
});
于 2013-11-01T15:49:33.560 に答える