Wenn wir eine JQuery-Ajax-Methode aufrufen, benötigen wir manchmal die Methode, um einen Wert zurückzugeben oder einer globalen Variablen einen Wert zuzuweisen. Wir stellen jedoch fest, dass der gewünschte Wert nach der Ausführung des Programms nicht erhalten wird, zum Beispiel:

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

Die Daten in data werden asynchron abgerufen. Der Code in der globalen Umgebung wird beim Laden der Seite ausgeführt. Zu diesem Zeitpunkt ist die asynchrone Datenerfassung noch nicht abgeschlossen und der Wert kann nicht abgerufen werden.

Lösung:

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

Oder fügen Sie es direkt vor $.get() hinzu

$.ajaxSettings.async = false;

Ändern Sie die Standardkonfiguration.

Der Standardeinstellungswert von async ist true. In diesem Fall handelt es sich um eine asynchrone Methode. Das heißt, wenn Ajax eine Anfrage sendet, während er auf die Rückkehr des Servers wartet, führt er das Skript nach dem Ajax weiter aus Block, bis der Server das richtige Ergebnis zurückgibt, wird nur dann ausgeführt, wenn der Erfolg erfolgreich ist. Dies bedeutet, dass zu diesem Zeitpunkt zwei Threads ausgeführt werden, ein Thread, nachdem der Ajax-Block die Anforderung gesendet hat, und das Skript hinter dem Ajax-Block.

Wenn es auf async:false gesetzt ist, gehen natürlich die Vorteile der Ajax-Asynchronität verloren und es muss je nach Situation unterschiedlich behandelt werden.


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

Hinterlasse eine Antwort