【问题标题】:Pushing ajax object response into an array [duplicate]将ajax对象响应推送到数组中[重复]
【发布时间】:2014-01-03 17:15:58
【问题描述】:

由于某种原因,这并没有正确地将我的 Ajax 响应中的每个对象循环到数组中,我现在正用这个把头撞到墙上。

我的 Ajax 响应如下...

{type:'blog_post',date:2013-30-12,title:'Blog Post',width:450,content:'qweqwe'},{type:'blog_post',date:2013-30-12,title:'Blog Post',width:450,content:'qweqwe'}

这是代码...

var getTimelineData = function() {
    var tldata = [];
    $.get('/data/timeline_data', function(data) {
        $.each(data, function(i, val) {
            tldata.push(val)
            console.log(val);
        });
    });
    return tldata;
};  

控制台日志返回的不是单个数组项的确切响应。

【问题讨论】:

  • 您的 AJAX 响应不是数组。

标签: javascript jquery ajax arrays


【解决方案1】:

AJAX 是异步的!当您调用$.get 时,AJAX 调用在后台运行,您的代码继续运行。稍后,当 AJAX 调用完成时,您的回调函数就会运行。因此,return tldata; 在 AJAX 调用完成之前运行。

不能从 AJAX 调用返回值,这不是它的工作原理。我建议将回调传递给getTimelineData 函数。你可以在 AJAX 调用完成后调用它:

var getTimelineData = function(callback) {
    $.get('/data/timeline_data', function(data) {
        var tldata = [];

        $.each(data, function(i, val) {
            tldata.push(val)
            console.log(val);
        });

        if($.isFunction(callback)){
            callback(tldata);
        }
    });
};

那么你可以这样称呼它:

getTimelineData(function(data){
    console.log(data);
});

【讨论】:

    【解决方案2】:

    您的 ajax 响应是无效的 JSON。如果你想返回一个数组,你应该将它包装在 [] 中:

    [{type:'blog_post',date:2013-30-12,title:'Blog Post',width:450,content:'qweqwe'},{type:'blog_post',date:2013-30-12,title:'Blog Post',width:450,content:'qweqwe'}]
    

    【讨论】:

    • 它不是 Json,它是一个 javascript 数组。
    【解决方案3】:

    也许在线提供的 JSON cheker 之一可以帮助您。我经常使用http://jsonlint.com/

    在 JSON 中,数组是用 [] 声明的,所以我怀疑 ajax 答案应该更多:

    [
        {
            "type": "blog_post",
            "date": "2013-30-12",
            "title": "BlogPost",
            "width": 450,
            "content": "qweqwe"
        },
        {
            "type": "blog_post",
            "date": "2013-30-12",
            "title": "BlogPost",
            "width": 450,
            "content": "qweqwe"
        }
    ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-16
      • 1970-01-01
      • 2021-12-04
      • 2015-11-17
      • 1970-01-01
      相关资源
      最近更新 更多