1

我在用 json 返回的数据填充现有数组时几乎没有问题。这是我所拥有的

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

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

4

3 回答 3

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 请求完成后获取其内容并且需要时间。所以console在请求完成之前在 $.getJSON 之外执行。

于 2012-04-19T08:36:46.657 回答
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
}
于 2012-04-19T08:45:19.243 回答
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);
    });
}
于 2012-04-19T08:46:17.273 回答