使用json数据填充现有数组

时间:2012-04-19 08:35:02

标签: javascript arrays json function

我在用json返回的数据填充现有数组时遇到了一些麻烦。 这就是我所拥有的

myarr=[];
function fillarr()
    {
    $.getJSON("test.php?c=10",function(data)
            {
            $.each(data, function(key, val)
                    {
                    myarr.push(data[val]);
                    }
                    });
            });
    }

我的问题是,数组在函数之外是emty。 请帮忙。

3 个答案:

答案 0 :(得分:1)

myarr=[];
function fillarr()
    {
    $.getJSON("test.php?c=10",function(data)
            {
            $.each(data, function(key, val)
                    {
                        myarr.push(val);
                        console.log(myarr); // you will myarr here, not out side
                    }
                    });
            });
      console.log(myarr); // wont get
    }

myarr在ajax请求完成及其占用时间后获取其内容。因此,$ .getJSON之外的console在请求完成之前执行。

答案 1 :(得分:1)

myarr=[];
function fillarr()
{
    $.getJSON("test.php?c=10", function(data) {
        $.each(data, function(key, val) {
            myarr.push(val);
        });
        doSomethingNowThatTheArrayIsActuallyPopulated();
    });
}

fillarr();

console.log(myarr); // This will print an empty array, it hasn't been populated yet.

function doSomethingNowThatTheArrayIsActuallyPopulated() {
    console.log(myarr); // This will print the array which now contains the json values
}

答案 2 :(得分:0)

如果返回数据是一个对象,则更容易jQuery.each将每个值推送到数组。

function fillarr(){
    $.getJSON("test.php?c=10",function(data){
        $.each(data, function(key, val){
            myarr.push(val);
        });
    });
}

如果返回数据是一个数组,Array concat会更快

function fillarr(){
    $.getJSON("test.php?c=10",function(data){
        myarr = myarr.concat(data);
    });
}