Quando chiamiamo un metodo jquery ajax, a volte abbiamo bisogno che il metodo restituisca un valore o assegni un valore a una variabile globale, ma scopriamo che il valore desiderato non viene ottenuto dopo l'esecuzione del programma, ad esempio:

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

I dati in data vengono ottenuti in modo asincrono. Il codice nell'ambiente globale viene eseguito quando la pagina viene caricata. In questo momento, l'acquisizione dei dati asincrona non è stata completata e il valore non può essere ottenuto.

Soluzione:

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

Oppure aggiungilo direttamente prima di $.get()

$.ajaxSettings.async = false;

Modificare la configurazione predefinita.

Il valore di impostazione predefinito di async è true. In questo caso, si tratta di un metodo asincrono, ovvero quando ajax invia una richiesta, mentre attende il ritorno del server, il front desk continuerà a eseguire lo script dopo ajax. block finché il server non restituisce il risultato corretto. Success verrà eseguito solo quando viene eseguito success, il che significa che in questo momento vengono eseguiti due thread, un thread dopo che il blocco ajax ha inviato la richiesta e lo script dietro il blocco ajax.

Naturalmente, se è impostato su async:false, i vantaggi dell'asincronia Ajax andranno persi e dovrà essere trattato in modo diverso a seconda della situazione.


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

lascia un commento