Console.log返回'undefined'

时间:2012-10-22 23:02:16

标签: javascript jquery

为什么这不起作用?

var names;

$.ajax({
     type : 'POST',
     url : postUrl+"/admin/returnUserJSON",
     success : function(data){
          names = data;
     }
});

console.log(names);

问题: Console.log正在返回undefined。

4 个答案:

答案 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);
     } 
});

我建议您阅读asynchronous javascript programming

答案 3 :(得分:1)

AJAX请求在页面加载后触发,这就是您收到错误的原因。将变量打印到控制台时,该变量不存在。