Cette fois, je vais vous dire quelle est la différence entre utiliser Ajax pour obtenir une synchronisation et une implémentation asynchrone, et quelles sont les précautions concernant l'utilisation d'Ajax pour obtenir une synchronisation et une implémentation asynchrone. Ce qui suit est un cas pratique. , jetons un coup d'oeil.
Lors de l'envoi et de la réception de données en arrière-plan via ajax, des problèmes de synchronisation et asynchrones surviennent souvent. Étant donné que ajax est chargé par défaut de manière asynchrone, mais que parfois une synchronisation ou des effets de synchronisation sont nécessaires, il existe deux solutions.
Option 1 : placez certaines méthodes dans la fonction de rappel pour l'exécution, c'est-à-dire attendez que le succès revienne de l'arrière-plan avant de l'exécuter.
Exemple :
$.getJSON("/data-access/sens-config/IPandPortSel",{},function(resp){ if(resp.code==0){ $.each(resp.data,function(i,obj){ option_net_type += addOption(obj); }); $("#edit-addr_id").append(option_net_type); addr_idOld = $('#edit-addr_id').val(addr_id); } });
La partie rouge doit être exécutée une fois les données renvoyées avec succès, si elle est placée à l'extérieur de if(resp.code==0){} ( (Mais placé après $.getJSON();) Il y aura une situation où la partie rouge du code aura été exécutée avant que les données ne soient renvoyées depuis l'arrière-plan.
Méthode 2 : Utilisez la méthode de livraison ajax standard
$.ajax({ type : "post", url : "/data-access/manufacturer/deleteBranch", data : data, async : false,//取消异步 success : function(resp){ if(resp.code==0){ if(ids.length>=currentListNum&¤tPage!=1){ currentPage = currentPage - 1; } var para = { mypara :currentPage, startPage : currentPage, }; $('p.page-box').data('myPage').setOptions({data: para}); } } });
Remarque : Cette méthode n'est qu'une méthode de transmission de synchronisation partielle et n'affectera pas les autres. transmissions. C'est un moyen relativement Sûr et recommandé
Il existe un autre moyen :
// $.ajaxSettings.async = false; // $.getJSON("/data-access/ip-config/deleteBranch",data,function(resp){ // if(resp.code==0){ // if(ids.length>=currentListNum&¤tPage!=1){ // currentPage = currentPage - 1; // } // var para = { // mypara :currentPage, // startPage : currentPage, // }; // $('p.page-box').data('myPage').setOptions({data: para}); // } // }); // $.ajaxSettings.async = true;
Cette méthode est globale et n'est pas recommandée car elle affectera d'autres transmissions ajax
Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention à. autres sites Web php chinois.
Lecture recommandée :
Utiliser Blod pour télécharger la barre de progression ajax
Comment Ajax réalise l'urbanisation. liaison secondaire
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!