0
我有一個函數,使2 getjson調用,並寫入響應數組。我用下面的代碼在我的第二個的getJSON調用結束:如何在getjson調用結束時顯示數組內容?
alert(files.length);
print_r(files);
console.log(files);
然而,files.length告訴我的陣列,但的print_r(文件)項目的數量;和console.log不工作?我想打印數組項目以確認我得到正確的項目,但數組打印不起作用! ?可以在任何一個可以告訴我怎麼解決這個問題(我的目標是以後排序這個數組並刪除重複和過濾器......)
<script>
var files = new Array();
function pushtoArray(){
//first getjson call
var url1 = "https://spreadsheets.google.com/feeds/list/xxxxx/xxxxx/public/values?alt=json";
$.getJSON(url1, function(data) {
var entry = data.feed.entry;
$(entry).each(function(){
// Column names are name, age, etc.
count++;
files.push({ url: this.gsx$url.$t, filename: this.gsx$name.$t });
$('.results').prepend('<h2>'+this.gsx$name.$t+'</h2><p>'+this.gsx$url.$t+'</p>');
});
alert(files.length);
print_r(files);
console.log(files);
});//end of ajax call
//second getjson call
var url2 = "https://spreadsheets.google.com/feeds/list/xxxxx/xxxxx/public/values?alt=json";
$.getJSON(url2, function(data) {
var entry = data.feed.entry;
$(entry).each(function(){
// Column names are name, age, etc.
count++;
files.push({ url: this.gsx$url.$t, filename: this.gsx$name.$t });
$('.results').prepend('<h2>'+this.gsx$name.$t+'</h2><p>'+this.gsx$url.$t+'</p>');
});
alert(files.length);
print_r(files);
console.log(files);
});//end of ajax call
};//end of function
</javascript>
的html代碼:
<body onload="pushtoArray()">
感謝您的回覆。我如何使用ajax之外的數組?例如在另一個功能? – user1788736
爲此,我想你應該把它放在一個非局部變量中。 (局部變量具有前綴「var」)。 您應該記住,Ajax調用是異步的,因此getJSON和ajax調用結束之間的代碼會比腳本中的其他代碼執行得晚一點(因爲它在啓動Ajax時會繼續執行-呼叫)。 –
如何在發送數組到另一個函數之前等待所有多個getjson調用完成? – user1788736