爲什麼這不起作用?Console.log返回'undefined'
var names;
$.ajax({
type : 'POST',
url : postUrl+"/admin/returnUserJSON",
success : function(data){
names = data;
}
});
console.log(names);
問題: CONSOLE.LOG被返回undefined。
爲什麼這不起作用?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
。
你能解決這個問題有兩種方式:要麼你的輸出進入回調函數...
function(data){
names = data;
console.log(names);
}
...或使用無極接口:
$.ajax({
type : 'POST',
url : postUrl+"/admin/returnUserJSON",
success : function(data){
names = data;
}
}).then(function() { console.log(names); });
你需要移動您的console.log到success
處理程序。
success : function(data){
names = data;
console.log(names);
}
在執行console.log
時,您的AJAX請求尚未完成觸發。
如果您將console.log
移至success
回調,您將正確獲取數據。
var names;
$.ajax({
type : 'POST',
url : postUrl+"/admin/returnUserJSON",
success : function(data){
names = data;
console.log(names);
}
});
AJAX請求在頁面已經被加載後觸發,所以這就是爲什麼你會得到錯誤。當您將變量輸出到控制檯時,該變量不存在。
把'console.log(names);'放在'success'回調中。記住:AJAX代表[**異步** JavaScript和XML](http://en.wikipedia.org/wiki/Asynchronous_I/O) – MilkyWayJoe
只是確保成功被稱爲.. – insomiac
這種類型的問題被問到每週至少五次。 – ahren