Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk menukar permintaan ajax daripada asynchronous kepada segerak

Bagaimana untuk menukar permintaan ajax daripada asynchronous kepada segerak

青灯夜游
青灯夜游asal
2022-01-17 16:28:326248semak imbas

AJAX boleh dibahagikan kepada segerak dan tak segerak mengikut nilai tak segerak yang berbeza Secara lalai, nilai tak segerak adalah benar (penyerahan tak segerak); nilai kepada palsu.

Bagaimana untuk menukar permintaan ajax daripada asynchronous kepada segerak

Persekitaran pengendalian tutorial ini: sistem Windows 7, versi JavaScript 1.8.5, komputer Dell G3.

Mengikut nilai async, AJAX dibahagikan kepada segerak (async = false) dan asynchronous (async = true)

Secara lalai, async adalah benar (asynchronous submission).

Jika anda ingin menyegerakkan, tetapkan async kepada false.

Contoh:

Apabila menggunakan AJAX, kadangkala anda akan menghadapi keperluan untuk mendapatkan tatasusunan dan id yang sepadan dengan data daripada satu antara muka, dan kemudian mendapatkan data pada antara muka lain , kaedah penulisan awal adalah seperti berikut:

$.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;));      
    });

Walau bagaimanapun, pada masa ini, selalunya terdapat masalah bahawa tiada data ditulis selepas tatasusunan dikosongkan Pemula sering tersilap berfikir bahawa antara muka adalah salah, tetapi ia tidak berlaku

Ini kerana kaedah Ajax seperti $get() mengambil masa untuk memanggil antara muka, menyebabkan gelagat tambah berlaku sebelum tolakan selesai, iaitu tatasusunan dikosongkan pada masa ini, tetapi tiada data yang dibaca dengan bergabung dalam tatasusunan dom pada masa ini

Oleh itu, Ajax dalam gelung perlu diubah suai untuk disegerakkan di sini Pengubahsuaian kod adalah seperti berikut:

$.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;));      
    });

[Tutorial berkaitan disyorkan: Tutorial video AJAX]

Atas ialah kandungan terperinci Bagaimana untuk menukar permintaan ajax daripada asynchronous kepada segerak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn