Ao chamar um método jquery ajax, às vezes precisamos que o método retorne um valor ou atribua um valor a uma variável global, mas descobrimos que o valor que desejamos não é obtido após a execução do programa, por exemplo:
var i=0;//定义一个全局全量 $.get(url,function(data){ i=9; })//然后调用jquery的一个函数 alert(i);//得到的是0而不是9
Os dados nos dados são obtidos de forma assíncrona. O código no ambiente global é executado quando a página é carregada. Neste momento, a aquisição de dados assíncrona não foi concluída e o valor não pode ser obtido.
Solução:
var i=0; $.ajax({ url:url, success:function(){ i=9; }, async:false }); alert(i);
Ou adicione-o diretamente antes de $.get()
$.ajaxSettings.async = false;
Modifique a configuração padrão.
O valor padrão de async é verdadeiro. Nesse caso, é um método assíncrono. Ou seja, quando o ajax envia uma solicitação, enquanto espera o retorno do servidor, a recepção continuará a executar o script após o ajax. bloco até que o servidor retorne o resultado correto. O sucesso será executado somente quando o sucesso for executado, o que significa que dois threads são executados neste momento, um thread após o bloco ajax enviar a solicitação e o script atrás do bloco ajax.
Claro, se for definido como async:false, as vantagens da assincronia do ajax serão perdidas e precisará ser tratada de forma diferente dependendo da situação.
HTTPS://blog.CSDN.net/JAtion_/article/details/49357307
HTTPS://wuwuwu.cn blog上.com/发-photo/fear/4424633.HTML
HTTPS://wuwuwu.basic51.net/article/45432.htm