Maison  >  Article  >  interface Web  >  Une brève analyse et des solutions à la synchronisation Ajax et aux problèmes asynchrones

Une brève analyse et des solutions à la synchronisation Ajax et aux problèmes asynchrones

亚连
亚连original
2018-05-22 17:12:322000parcourir

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. Cet article vous présentera une brève analyse de la synchronisation Ajax et des problèmes asynchrones. Les amis qui en ont besoin peuvent se référer à

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 à exécuter, c'est-à-dire attendez le retour réussi 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&&currentPage!=1){
currentPage = currentPage - 1;
}
var para = {
mypara :currentPage,
startPage : currentPage,
};
$('p.page-box').data('myPage').setOptions({data: para});
}
  } 
 });

Remarque : Cette méthode est uniquement une méthode de transmission synchrone locale et n'affectera pas les autres. transmissions. C'est plus sûr. Il existe également une méthode

recommandée :

Cette méthode est globale et n'est pas recommandée car elle affectera les autres transmissions ajax. >Ce qui précède est ce que j'ai compilé pour vous. J'espère qu'il sera utile à tout le monde à l'avenir Articles connexes :

// $.ajaxSettings.async = false;
// $.getJSON("/data-access/ip-config/deleteBranch",data,function(resp){
// if(resp.code==0){
// if(ids.length>=currentListNum&&currentPage!=1){
// currentPage = currentPage - 1;
// }
// var para = {
// mypara :currentPage,
// startPage : currentPage,
// };
// $('p.page-box').data('myPage').setOptions({data: para});
// }
// });
// $.ajaxSettings.async = true;
Explication détaillée de la position : problème résolu dans IE6<.>

Explication détaillée des symboles !important, *, _ dans les styles CSS

remplissage pour créer une mise en page adaptative d'image (pourcentage CSS)

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