Lors de l'appel d'une méthode jquery ajax, nous avons parfois besoin que la méthode renvoie une valeur ou attribue une valeur à une variable globale, mais nous constatons que la valeur souhaitée n'est pas obtenue après l'exécution du programme, par exemple :

var i=0;//定义一个全局全量
$.get(url,function(data){
    i=9;
})//然后调用jquery的一个函数
alert(i);//得到的是0而不是9

Les données dans data sont obtenues de manière asynchrone. Le code dans l'environnement global est exécuté lorsque la page est chargée. À ce moment, l'acquisition de données asynchrone n'est pas terminée et la valeur ne peut pas être obtenue.

Solution:

var i=0;
$.ajax({
   url:url,
   success:function(){
         i=9;
   },
   async:false
});
alert(i);

Ou ajoutez-le directement avant $.get()

$.ajaxSettings.async = false;

Modifiez la configuration par défaut.

La valeur par défaut de async est true. Dans ce cas, il s'agit d'une méthode asynchrone, c'est-à-dire que lorsque ajax envoie une requête, en attendant le retour du serveur, la réception continuera à exécuter le script après l'ajax. bloquer jusqu'à ce que le serveur renvoie le résultat correct. Le succès ne sera exécuté que lorsque le succès est exécuté, ce qui signifie que deux threads sont exécutés à ce moment, un thread après le bloc ajax envoie la requête et le script après le bloc ajax.

Bien sûr, s’il est défini sur async:false, les avantages de l’asynchronie ajax seront perdus et il faudra le traiter différemment selon la situation.


HTTPS://blog.CSDN.net/JA tion_/article/details/49357307

HTTPS://wuwuwu.cn blog上.com/发-photo/fear/4424633.HTML

HTTPS://wuwuwu.basic51.net/article/45432.htm

Laisser une réponse