Maison > interface Web > Questions et réponses frontales > Comment changer la requête ajax d'asynchrone en synchrone

Comment changer la requête ajax d'asynchrone en synchrone

青灯夜游
Libérer: 2022-01-17 16:28:32
original
6318 Les gens l'ont consulté

AJAX peut être divisé en synchrone et asynchrone selon les différentes valeurs asynchrones. Par défaut, la valeur asynchrone est vraie (soumission asynchrone) si vous souhaitez passer de l'asynchrone à l'asynchrone, il vous suffit de définir la valeur asynchrone sur false.

Comment changer la requête ajax d'asynchrone en synchrone

L'environnement d'exploitation de ce tutoriel : système Windows 7, JavaScript version 1.8.5, ordinateur Dell G3.

AJAX est divisé en synchrone (async = false) et asynchrone (async = true) selon la valeur de async

Par défaut, async est true (soumission asynchrone).

Si vous souhaitez synchroniser, définissez simplement async sur false.

Exemple :

Lorsque vous utilisez AJAX, vous avez parfois besoin d'obtenir un tableau et l'identifiant correspondant aux données d'une interface, puis d'obtenir les données sur une autre interface. L'écriture initiale est la suivante :

$.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;));      
    });
Copier après la connexion

Mais. Souvent, à ce moment-là, il y aura un problème selon lequel aucune donnée n'est écrite après l'effacement du tableau. Lorsque les débutants pensent souvent à tort que l'interface est erronée, en fait ce n'est pas le cas, car les méthodes Ajax telles que $get(). prendre le temps d'appeler l'interface, ce qui fait que le push n'est pas encore terminé. Le comportement d'ajout se produit, c'est-à-dire que le tableau est effacé à ce moment-là, mais il n'y a aucune donnée lue par jointure dans le tableau dom à ce moment-là

Donc l'Ajax dans la boucle doit être modifié pour être synchronisé. La modification du code est la suivante :

$.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;));      
    });
Copier après la connexion

[Recommandations du didacticiel associé :

Tutoriel vidéo AJAX

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal