Console.log返回’undefined’
为什么这不起作用?
var names; $.ajax({ type : 'POST', url : postUrl+"/admin/returnUserJSON", success : function(data){ names = data; } }); console.log(names);
问题: Console.log返回undefined。
由于$.ajax
调用是异步的,所以在执行names=data
行之前将调用console.log
(因为它是$.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); }
在执行console.log
您的AJAX请求尚未完成。
如果将console.log
移动到success
回调,则可以正确获取数据。
var names; $.ajax({ type : 'POST', url : postUrl+"/admin/returnUserJSON", success : function(data){ names = data; console.log(names); } });
我建议阅读异步javascript编程 !
页面加载后会触发AJAX请求,这就是您收到错误的原因。 将变量打印到控制台时,该变量不存在。