2012-04-19 3 views
1

jsonが返すデータで既存の配列を作成するのに問題はほとんどありません。ここで iは既存の配列にjsonデータを設定する

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

持っているものである私の問題は、アレイが機能外emtyであること、です。 助けてください。

+0

戻りデータがどのようなもの

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

Array concatは速いだろうか?それはオブジェクトリテラルか配列ですか? 'myarr'の範囲は何ですか? – Joseph

答えて

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が実行されます。

+0

返信いただきありがとうございますが、diffrenceはありません。 値は関数内でのみ使用でき、関数外では使用できません。 – BSDGuy

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 
} 
+0

返されるデータは配列です。 – BSDGuy

+0

ありがとうございます。それはistだった。どうもありがとうございました。 – BSDGuy

0

戻りデータがオブジェクトである場合、それは配列にそれぞれの値をプッシュするjQuery.eachを行うには簡単です。戻り値のデータが配列の場合

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

返されるデータは配列です。 – BSDGuy

+0

次にconcatは仕事のためによい – Joseph

+0

私はあなたの提案をすべて試しました、ありがとう。機能していますが、機能の中だけです。関数の外側では、arraはまだ空です。 – BSDGuy

関連する問題