ホームページ >ウェブフロントエンド >フロントエンドQ&A >Ajaxリクエストを非同期から同期に変更する方法

Ajaxリクエストを非同期から同期に変更する方法

青灯夜游
青灯夜游オリジナル
2022-01-17 16:28:326307ブラウズ

AJAX は、さまざまな async 値に応じて同期と非同期に分けることができます。デフォルトでは、async 値は true (非同期送信) です。非同期を同期に変更したい場合は、async を設定するだけで済みます。値を false に設定できます。

Ajaxリクエストを非同期から同期に変更する方法

このチュートリアルの動作環境: 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(&#39;&#39;));      
    });

ただし、このとき、配列がクリアされた後にデータが書き込まれないという問題がよく発生します。

これは、$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(&#39;&#39;));      
    });

[関連チュートリアルの推奨事項: AJAX ビデオ チュートリアル]

以上がAjaxリクエストを非同期から同期に変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。