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
    }

myarrajaxリクエストが完了し、時間がかかった後にコンテンツを取得します。したがって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 に答える