为什么这不起作用?
var names;
$.ajax({
type : 'POST',
url : postUrl+"/admin/returnUserJSON",
success : function(data){
names = data;
}
});
console.log(names);
问题: Console.log 返回未定义。
为什么这不起作用?
var names;
$.ajax({
type : 'POST',
url : postUrl+"/admin/returnUserJSON",
success : function(data){
names = data;
}
});
console.log(names);
问题: Console.log 返回未定义。
由于$.ajax
call 是异步的,console.log
将在line 执行之前 调用(因为它是回调函数的一部分,只有在服务器响应后才会调用)。因此它将输出.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); });
您需要将您的 console.log 移动到success
处理程序中。
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 请求在页面加载后触发,这就是您收到错误的原因。当您将变量打印到控制台时,该变量不存在。