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

Deixe uma resposta