2012-04-19 72 views
1

使用json返回的數據填充現有數組時,我沒有什麼麻煩。 這裏是我有使用json數據填充現有數組

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

我的問題是,該陣列是emty的功能外。 請幫忙。

+0

什麼返回的數據看起來會更快?它是一個對象字面量還是數組? 「myarr」的範圍是什麼? – Joseph 2012-04-19 08:41:31

回答

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在請求完成之前執行。

+0

感謝您的回覆,但沒有任何區別。 這些值僅在函數中可用,不在函數外部。 – BSDGuy 2012-04-19 08:43:41

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 2012-04-19 08:54:06

+0

謝謝。那是ist。非常感謝你。 – BSDGuy 2012-04-19 09:27:26

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

返回的數據是一個數組。 – BSDGuy 2012-04-19 08:55:05

+0

然後concat會更好的工作 – Joseph 2012-04-19 08:55:53

+0

我試過所有的建議,謝謝。正在工作,但只在功能內。在功能外,陣列仍然是空的。 – BSDGuy 2012-04-19 08:55:56