需要在 jQuery 中从 AJAX 将所有 JSON 推送到一个数组中

Posted

技术标签:

【中文标题】需要在 jQuery 中从 AJAX 将所有 JSON 推送到一个数组中【英文标题】:Need to push all JSON into an array from AJAX, in jQuery 【发布时间】:2013-06-17 23:32:13 【问题描述】:

代码如下:

var newFeeds = []; // ** GLOBAL **

$(document.body).click(function() 

$.ajax(
            type: "POST",
            url: "http://mysite.com/feed.php",
            success:  function (data) 
                        $(newFeeds).push(data);
                        alert(newFeeds.length);
                        ,
            error: function(error)
                      alert('Error: ' + error);
                    ,
            dataType: "json"
    );
);

我可以从服务器获取数据。一切正常,但数组永远不会填满。 但奇怪的是newFeeds.length 返回 0!为什么? 我需要将到达的数据推送到一个数组中以备后用。

【问题讨论】:

当然不要忘记 newFeeds 直到 异步调用完成后才会被填充 所以你们是要帮他,还是把啤酒和一袋薯条递过去? 【参考方案1】:
$(newFeeds).push(data)

应该是

newFeeds.push(data)

newFeeds 是您已声明的数组。

var newFeeds = []; 

但在回调中,您将其包装为 jQuery Object

$(newFeeds) 

【讨论】:

好的,在更正之后(我的错,忘记撤消我的所有尝试)它仍然无法总结。我在 json 中得到 3 个结果。我希望在第二次点击时获得 6,但由于某种原因它仍然是 3(?) @Ted 你确定你在检查数组长度之前给回调一个完成的机会(根据上面关于问题的评论)? data 长什么样子? @Alnitak.. 我认为他正在检查回调中的数组长度 @Ted。很高兴有帮助:)

以上是关于需要在 jQuery 中从 AJAX 将所有 JSON 推送到一个数组中的主要内容,如果未能解决你的问题,请参考以下文章

在 jQuery AJAX Success 中从 MySql 获取特定响应

在 Laravel 4 中从 Jquery Ajax Json 中检索值

如何删除 Vue.js 中的元素?

jquery+ajax怎么实现分页

用JQuery实现ajax技术的常用方法

原生JS封装AJAX