json-如何在jQuery中将项目添加到数组?

var list = [];
$.getJSON("json.js", function(data) {
    $.each(data, function(i, item) {
        console.log(item.text);
        list.push(item.text);
    });
});
console.log(list.length);

list.length始终返回0。我在firebug中浏览了JSON,它的格式正确,一切都很好。 我似乎无法将一个项目添加到数组中,我缺少什么?

NATO24 asked 2019-10-09T18:33:11Z
3个解决方案
117 votes

由于$.getJSON是异步的,我认为您的console.log(list.length);代码在填充数组之前就已触发。 要更正此问题,请将您的console.log语句放入回调中:

var list = new Array();
$.getJSON("json.js", function(data) {
    $.each(data, function(i, item) {
        console.log(item.text);
        list.push(item.text);
    });
    console.log(list.length);
});
Derek Swingley answered 2019-10-09T18:33:22Z
3 votes

您正在发出异步的ajax请求,因此列表长度的控制台日志在ajax请求完成之前发生。

实现所需目标的唯一方法是将ajax调用更改为同步。 您可以使用.ajax并传递asynch来执行此操作:false,但是不建议这样做,因为它会在调用返回之前将UI锁定,如果返回失败,则用户必须退出浏览器。

redsquare answered 2019-10-09T18:33:53Z
3 votes

希望这个能对您有所帮助..

var list = [];
    $(document).ready(function () {
        $('#test').click(function () {
            var oRows = $('#MainContent_Table1 tr').length;
            $('#MainContent_Table1 tr').each(function (index) {
                list.push(this.cells[0].innerHTML);
            });
        });
    });
aji answered 2019-10-09T18:34:17Z
translate from https://stackoverflow.com:/questions/1353245/how-do-i-add-items-to-an-array-in-jquery