为什么这不起作用?
var names;
$.ajax({
type : 'POST',
url : postUrl+"/admin/returnUserJSON",
success : function(data){
names = data;
}
});
console.log(names);
问题: Console.log正在返回undefined。
答案 0 :(得分:5)
由于$.ajax
调用是异步的,console.log
将在执行 names=data
行之前调用(因为它是$.ajax
的一部分回调函数,只在服务器响应后调用。因此它将输出undefined
。
您可以通过两种方式修复它:将输出移动到回调函数中......
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); });
答案 1 :(得分:2)
您需要将console.log移动到success
处理程序。
success : function(data){
names = data;
console.log(names);
}
答案 2 :(得分:2)
您的AJAX请求在console.log
执行时尚未完成。
如果您将console.log
移至success
回调,则可以正确获取数据。
var names;
$.ajax({
type : 'POST',
url : postUrl+"/admin/returnUserJSON",
success : function(data){
names = data;
console.log(names);
}
});
答案 3 :(得分:1)
AJAX请求在页面加载后触发,这就是您收到错误的原因。将变量打印到控制台时,该变量不存在。