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请求,这就是您收到错误的原因。 将变量打印到控制台时,该变量不存在。