从Ajax返回数据会导致奇怪的对象

我知道这个问题可能被问过一千次,但我似乎无法找到答案。 我希望result是从ajax-request返回的数据,它应该是一个json-data数组( console.log(data)的结果)。

  var result = $.ajax({
    type: 'GET',
    url: dataPath,
    dataType: 'json',
    success: function(data) {
      console.log(data)
      },
    error: function(){
      //alert("damn");  
      },
    data: {},
    aync: false
  });

  console.log(result); 

但是, console.log(result); 会返回一些奇怪的对象,我不知道该如何处理。 为什么不是result = data


错字。

改变这个:

aync: false

至:

async: false

ajax方法仍然返回执行请求的jqXHR对象,而不是结果。 在success调用中使用data参数并将其存储在某个地方。


首先从代码中删除aync: false 。 它应该被拼写为async: false但你不需要它来实现你的目标,它实际上会阻止整个浏览器的用户界面,导致糟糕的用户体验。 请记住,AJAX中的“A”表示异步

$.ajax()调用的结果是一个与您的数据不同的承诺 ,但它对于获取数据仍然很有用。 你只需要以某种方式使用它。

尝试改变:

 console.log(result);

至:

result.done(function (data) { 
    console.log(data);
});

要么:

result.done(function (data) { 
    console.dir(data);
});

甚至这可能会奏效 - 未经测试:

result.done(console.dir);

看到这个答案更好的解释。


初始化success函数内的result

 var result;
  $.ajax({
        type: 'GET',
        url: dataPath,
        dataType: 'json',
        success: function(data) {
          result = data;
          console.log(data)
          },
        error: function(){
          //alert("damn");  
          },
        data: {},
        async: false
      });

      console.log(result);
链接地址: http://www.djcxy.com/p/55391.html

上一篇: Returning data from ajax results in strange object

下一篇: jQuery Deferred not calling the resolve/done callbacks in order