2013-11-26 34 views

答えて

62

あなたはブラウザが他のコードに渡す前に、AJAXリクエストが完了することを必要とするとき、に偽を非同期を設定します。

<script> 
    // ... 
    $.ajax(... async: false ...); // Hey browser! first complete this request, 
            // then go for other codes 

    $.ajax(...); // Executed after the completion of the previous async:false request. 
</script> 

By default, the $アヤックスrequest in jQuery is set to asynchronous。変数名はasyncで、値はtrueに設定されています。これは最初にそれについて学ぶときに私に少し混乱を与えました、それでは、それを見て行きましょう。

同期(async:false) - スクリプトが応答を返信してから続行するのを待機します。同期Ajaxが必須である状況がいくつかあります。

標準のWebアプリケーションでは、顧客とサーバー間の対話は同期的です。これは、一方が他方の後に起こらなければならないことを意味する。顧客がリンクをクリックすると、要求がサーバーに送信され、サーバーは結果を戻します。

リクエストが失われてブラウザがハングアップする危険があるため、(onbefore)アンロードイベントハンドラ以外で同期JavaScriptを使用することはお勧めしませんが、サーバーから返信する必要がある場合は、ユーザーがページから離れて移動するには、同期Javascriptは最適なオプションではありません。

$.ajax({ 
     url: "file.php", 
     type: "POST", 
     async: false, 
     success: function(data) { 
       // ..... 
     } 
     }); 

非同期(非同期:真) - スクリプトは、ページが処理されることを継続することを可能にしている場合とするとき、それが到着した応答を処理します。ファイルの要求や転送に何か問題が生じた場合でも、プログラムは引き続き問題を認識して回復することができます。 処理は非同期的に、サーバーからの取得が行われている間にビジターがWebページとやりとりを続けることができ、要求された情報が処理され、応答が到着したときにページを更新します。

$.ajax({ 
     url: "file.php", 
     type: "POST", 
     async: true, 
     success: function(data) { 
        // ..... 
     } 
     }); 

また、この記事XHRためfalseブロック(など、画面のレンダリングは、JavaScriptの実行を担当)、メインスレッドを待機に設定

Asynchronous and Synchronous AJAX calls

+1

あなたの答えをありがとう!本当に便利です。 –

+1

クリアカット回答! –

+0

これに関する新しいアップデートはasync:これから間もなく廃止される予定ですか? – iWillGetBetter

3

を見てみましょう完了する。

これはほとんどの場合、ひどい考えです。ユーザーは、反応しないUIが気に入らない。

関連する問題