我在用json返回的数据填充现有数组时遇到了一些麻烦。 这就是我所拥有的
myarr=[];
function fillarr()
{
$.getJSON("test.php?c=10",function(data)
{
$.each(data, function(key, val)
{
myarr.push(data[val]);
}
});
});
}
我的问题是,数组在函数之外是emty。 请帮忙。
答案 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);
});
}