Al llamar a un método jquery ajax, a veces necesitamos que el método devuelva un valor o asigne un valor a una variable global, pero descubrimos que el valor que queremos no se obtiene después de ejecutar el programa, por ejemplo:

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

Los datos en los datos se obtienen de forma asincrónica. El código en el entorno global se ejecuta cuando se carga la página. En este momento, la adquisición de datos asincrónica no se ha completado y no se puede obtener el valor.

Solución:

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

O agréguelo directamente antes de $.get()

$.ajaxSettings.async = false;

Modifique la configuración predeterminada.

El valor de configuración predeterminado de async es verdadero. En este caso, es un método asincrónico, es decir, cuando ajax envía una solicitud, mientras espera que el servidor regrese, la recepción continuará ejecutando el script después de ajax. bloquear hasta que el servidor devuelva el resultado correcto. El éxito se ejecutará solo cuando se ejecute con éxito, lo que significa que se ejecutan dos subprocesos en este momento, un subproceso después del bloque ajax envía la solicitud y el script después del bloque ajax.

Por supuesto, si se establece en async:false, las ventajas de la asincronía ajax se perderán y deberá tratarse de manera diferente según la situación.


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

Deja una respuesta