なぜこれが機能しないのですか?
var names;
$.ajax({
type : 'POST',
url : postUrl+"/admin/returnUserJSON",
success : function(data){
names = data;
}
});
console.log(names);
問題: Console.log が undefined を返す。
なぜこれが機能しないのですか?
var names;
$.ajax({
type : 'POST',
url : postUrl+"/admin/returnUserJSON",
success : function(data){
names = data;
}
});
console.log(names);
問題: Console.log が undefined を返す。
$.ajax
呼び出しは非同期であるため、行が実行される前console.log
に呼び出されます (サーバーの応答後にのみ呼び出されるコールバック関数の一部であるため)。したがって、出力されます。 names=data
$.ajax
undefined
2 つの方法で修正できます。出力をコールバック関数に移動するか...
function(data){
names = data;
console.log(names);
}
... または Promise インターフェイスを利用します。
$.ajax({
type : 'POST',
url : postUrl+"/admin/returnUserJSON",
success : function(data){
names = data;
}
}).then(function() { console.log(names); });
success
console.log をハンドラーに移動する必要があります。
success : function(data){
names = data;
console.log(names);
}
あなたの AJAX リクエストは、実行されるまでに起動を完了していませんconsole.log
。
console.log
をコールバックに移動するsuccess
と、データが正しく取得されます。
var names;
$.ajax({
type : 'POST',
url : postUrl+"/admin/returnUserJSON",
success : function(data){
names = data;
console.log(names);
}
});
非同期JavaScriptプログラミングについて読むことをお勧めします!
ページが既にロードされた後にAJAXリクエストが発生するため、エラーが発生します。変数をコンソールに出力すると、変数は存在しません。