jquery ajax メソッドを呼び出すとき、メソッドが値を返したり、グローバル変数に値を代入したりする必要がある場合がありますが、プログラムの実行後に必要な値が取得されないことがわかります。次に例を示します。

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

data 内のデータは非同期で取得されます。ページロード時にグローバル環境のコードが実行されます。この時点では、非同期データの取得が完了していないため、値を取得できません。

解決:

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

または、$.get() の直前に追加します。

$.ajaxSettings.async = false;

デフォルトの構成を変更します。

この場合、async のデフォルト設定値は true です。つまり、ajax がリクエストを送信すると、フロント デスクは ajax の送信後にスクリプトを実行し続けます。サーバーが正しい結果を返すまでブロックします。成功は、成功が実行された場合にのみ実行されます。つまり、この時点では 2 つのスレッドが実行され、1 つのスレッドは ajax ブロックがリクエストを送信した後、1 つのスレッドが ajax ブロックの背後で実行されます。

もちろん、async:false に設定すると、ajax 非同期の利点が失われるため、状況に応じて異なる扱いをする必要があります。


HTTPS://blog.CSDN.net/JA tion_/article/details/49357307

HTTPS://wuwuwu.cn ブログ上.com/出版-photo/fear/4424633.HTML

HTTPS://wuwuwu.basic51.net/article/45432.htm

返信を残す