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