8

サーバーへのajax投稿の最大実行時間を指定する方法はありますか?サーバーが応答しない場合は、10秒間試行を続けてから、残りのコードを続行しますか?

Function doajaxPost(){
    var returned_value="";

    // #############I NEED THIS CODE TO TRY TO POST THE DATA TO THE SERVER AND KEEP
    // #############TRYING FOR 10 SECONDS AND THEN CONTINUE WITH THE REST OF THE CODE.
        jQuery.ajax({
            url: 'ajaxhandler.php',
            success: function (result) {                               
                returned_value=result;
            },
            async: false
        });
    // ###################################################

    alert(returned_value);

    some other code
    .
    .
    .           
 }
4

4 に答える 4

21

使用timeout:

jQuery.ajax({
    url: 'ajaxhandler.php',
    success: function (result) {                               
        returned_value=result;
    },
    timeout: 10000,
    async: false
});

ただし、alert(returned_value);呼び出しの直後に実行されます (呼び出しが終了するのを待ちません)。

于 2012-04-27T16:48:54.997 に答える
10

JQuery API ドキュメントには、「タイムアウト」の設定方法が記載されています。

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

ここでの他の回答は正しいですが、自分でドキュメントを確認することを学ぶことは、この回答だけを知ることよりも価値があります.

于 2012-04-27T16:48:53.630 に答える
5

ajax リクエストのタイムアウト値を設定できます。

タイムアウト

リクエストのタイムアウト (ミリ秒単位) を設定します。これは、$.ajaxSetup() で設定されたグローバル タイムアウトをオーバーライドします。タイムアウト期間は、$.ajax 呼び出しが行われた時点から始まります。他のいくつかのリクエストが進行中で、ブラウザに利用可能な接続がない場合、リクエストが送信される前にタイムアウトになる可能性があります。jQuery 1.4.x 以下では、リクエストがタイムアウトした場合、XMLHttpRequest オブジェクトは無効な状態になります。オブジェクト メンバーにアクセスすると、例外がスローされる場合があります。Firefox 3.0+ のみで、スクリプトと JSONP リクエストはタイムアウトでキャンセルできません。スクリプトは、タイムアウト期間後に到着した場合でも実行されます。

次に例を示します。

$.ajax({
   url: "ajaxhandler.php",
   ...
   timeout: 10000,
   ... 
});
于 2012-04-27T16:48:11.377 に答える
0

リクエストのタイムアウト (ミリ秒単位) を設定します。これは、で設定されたグローバル タイムアウトを上書きします$.ajaxSetup()$.ajaxタイムアウト期間は、呼び出しが行われた時点から始まります。他のいくつかのリクエストが進行中で、ブラウザに利用可能な接続がない場合、リクエストが送信される前にタイムアウトになる可能性があります。jQuery 1.4.x 以下ではXMLHttpRequest、リクエストがタイムアウトした場合、オブジェクトは無効な状態になります。オブジェクト メンバーにアクセスすると、例外がスローされる場合があります。Firefox 3.0+ のみで、スクリプトと JSONP リクエストはタイムアウトでキャンセルできません。タイムアウト期間後に到着した場合でも、スクリプトは実行されます。

于 2014-12-05T05:48:53.560 に答える