Maison  >  Article  >  interface Web  >  Comment changer la requête ajax d'asynchrone en synchrone

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

青灯夜游
青灯夜游original
2022-01-17 16:28:326190parcourir

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

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

[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!

Déclaration:
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