ホームページ >ウェブフロントエンド >フロントエンドQ&A >Ajaxリクエストを非同期から同期に変更する方法
AJAX は、さまざまな async 値に応じて同期と非同期に分けることができます。デフォルトでは、async 値は true (非同期送信) です。非同期を同期に変更したい場合は、async を設定するだけで済みます。値を false に設定できます。
このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。
AJAX は、async の値に応じて同期 (async = false) と非同期 (async = true) に分けられます。
デフォルトでは、async は true (非同期送信) です。
同期したい場合は、async を false に設定するだけです。
例:
AJAX を使用する場合、場合によっては、1 つのインターフェイスからデータに対応する配列と ID を取得してから、データを取得する必要がある場合があります。
$.get(url_1, function (data) { var dom = []; for (var i = 0; i < data.length; i++) { var item = data[i]; //两个url不一致,根据id查找另一个表 $.get(url_2, function (data) { var item_result = data; dom.push("<div> item_result.id</div>"); }); } $("#id").empty().append(dom.join('')); });
ただし、このとき、配列がクリアされた後にデータが書き込まれないという問題がよく発生します。
これは、$get() などの Ajax メソッドがインターフェイスを呼び出すときに時間がかかり、プッシュが完了する前に追加動作が発生するためです。この時点で配列はクリアされますが、この時点では dom 配列の join によって読み取られたデータはありません
したがって、ここで同期するようにループ内の Ajax を変更する必要があります。コードの変更は次のとおりです。以下:
$.get(url_1, function (data) { var dom = []; for (var i = 0; i < data.length; i++) { var item = data[i]; //在第二次的Ajax前将异步改同步 $.ajaxSettings.async = false; //两个url不一致,根据id查找另一个表 $.get(url_2, function (data) { var item_result = data; dom.push("<div> item_result.id</div>"); }); //注意在ajax中的push完成后,将其改回异步 $.ajaxSettings.async = true; } $("#id").empty().append(dom.join('')); });
[関連チュートリアルの推奨事項: AJAX ビデオ チュートリアル]
以上がAjaxリクエストを非同期から同期に変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。