1

重複の可能性:
jquery $.ajax タイムアウト設定

タイムアウトは機能しますが、タイムアウトが発生したときに関数を実行したいです。これを行う方法はありますか?

$.ajax({
    type: "GET", 
    url: "xajax.php", 
    timeout: 100, 
    data: "name=John&location=Boston", 
    success: function(msg) {
        alert( "Data Saved: " + msg );
    }
});
4

3 に答える 3

4

タイムアウトはエラーの一部としてスローされます。エラーの理由がタイムアウトであるかどうかを確認し、そこで関数を呼び出すことができます!

エラー ハンドラの 3 つの引数は、xmlhttprequest、textstatus、および message です。タイムアウトが発生すると、ステータス引数は「timeout」になります。

$.ajax({
    type: "GET", 
    url: "xajax.php", 
    timeout: 100, 
    data: "name=John&location=Boston", 
    success: function(msg){ alert( "Data Saved: " + msg ); }
    error: function(xmlhttprequest, textstatus, message) {
        if(textstatus==="timeout") {
            alert("Timeout happened"); //run function here!
        } else {
            alert(textstatus);
        }
    }
});​

可能な値はtextstatus、(null を無視して) "timeout"、"error"、"notmodified"、および "parsererror" です。

関連ドキュメントはhttp://api.jquery.com/jQuery.ajax/にあります

于 2012-10-22T10:59:18.843 に答える
0

使用完了:

リクエストが終了したとき (成功およびエラーのコールバックが実行された後) に呼び出される関数。この関数には 2 つの引数が渡されます: jqXHR (jQuery 1.4.x では XMLHTTPRequest) オブジェクトと、リクエストのステータスを分類する文字列 ("success"、"notmodified"、"error"、"timeout"、"abort"、または"パーサーエラー")。jQuery 1.5 では、完全な設定で関数の配列を受け入れることができます。各関数が順番に呼び出されます。これは Ajax イベントです。

またはエラー:

リクエストが失敗した場合に呼び出される関数。関数は 3 つの引数を受け取ります。jqXHR (jQuery 1.4.x では XMLHttpRequest) オブジェクト、発生したエラーの種類を説明する文字列、およびオプションの例外オブジェクト (発生した場合) です。2 番目の引数 (null 以外) に指定できる値は、"timeout"、"error"、"abort"、および "parsererror" です。HTTP エラーが発生すると、errorThrown は「Not Found」や「Internal Server Error」などの HTTP ステータスのテキスト部分を受け取ります。jQuery 1.5 以降、エラー設定は関数の配列を受け入れることができます。各関数が順番に呼び出されます。注: このハンドラは、クロスドメイン スクリプトおよび JSONP リクエストでは呼び出されません。これは Ajax イベントです。

次に、complete を使用した例を示します。

    $.ajax({ 
    type: "GET", 
    url: "xajax.php", 
    timeout: 100, 
    data: "name=John&location=Boston", 
    success: function(msg){ alert( "Data Saved: " + msg ); },
    complete: function(jqXHR, textStatus) { 
        if (textStatus == "timeout") {
           alert('timeout');
        }
    }
    });
于 2012-10-22T10:59:33.887 に答える
0

完全な機能を見てください

http://api.jquery.com/jQuery.ajax/

complete(jqXHR, textStatus) リクエストが終了したとき (成功およびエラーのコールバックが実行された後) に呼び出される関数。この関数には 2 つの引数が渡されます: jqXHR (jQuery 1.4.x では XMLHTTPRequest) オブジェクトと、リクエストのステータスを分類する文字列 ("success"、"notmodified"、"error"、"timeout"、"abort"、または"パーサーエラー")。jQuery 1.5 では、完全な設定で関数の配列を受け入れることができます。各関数が順番に呼び出されます。これは Ajax イベントです。

$.ajax({ 
   type: "GET", 
   url: "xajax.php", 
   timeout: 100, 
   data: "name=John&location=Boston",
   success: function(msg){ alert( "Data Saved: " + msg ); }, 
   complete: function(jqXHR, textStatus) {
        if (textStatus === "timeout") {
            alert("timeout");
        }
   }
于 2012-10-22T11:00:02.540 に答える