使用以下代码我尝试仅在两个getjson调用完成时才将2个getjson调用的数据导入到数组中。代码给了我这个错误:
resultFromUrl1.feed is undefined
var entry1 = resultFromUr11.feed.entry;
我看了f12,我看到两个getjson都成功执行但没有数据放入数组!如何解决这个错误?我应该使用$ .when(url1Promise,url2Promise).then或$ .when(url1Promise,url2Promise).done?
<javascript>
var files = new Array();
function pushtoArray() {
//first getjson call
var url1 = "https://spreadsheets.google.com/feeds/list/xxxxx/xxxxx/public/values?alt=json";
var url1Promise = $.getJSON(url1, function (data) {
console.log("url1 success");
});//end of ajax call
//second getjson call
var url2 = "https://spreadsheets.google.com/feeds/list/xxxxx/xxxxx/public/values?alt=json";
var url2Promise = $.getJSON(url2, function (data) {
console.log("url2 success");
});//end of function
$.when(url1Promise, url2Promise).then(function (resultFromUrl1, resultFromUrl2) {
var entry1 = resultFromUrl1.feed.entry;
var entry2 = resultFromUrl2.feed.entry;
var entry = entry1.concat(entry2);
$(entry).each(function () {
// Column names are name, age, etc.
count++;
files.push({ url: this.gsx$url.$t, filename: this.gsx$name.$t });
alert(files.length);
print_r(files);
console.log(files);
});
});
}//end of function
</javascript>
<body onload="pushtoArray()">
答案 0 :(得分:2)
jQuery ajax函数与$.when()
一起使用有点痛苦。 resultFromURL1
中的内容实际上是由三个值组成的数组:[data, textStatus, jqXHR]
。
所以,你需要改为:
var entry1 = resultFromUrl1[0].feed.entry;
var entry2 = resultFromUrl2[0].feed.entry;
此外,您应该在$.when().then()
构造中添加错误处理程序,以便查看getJSON()
来电中是否发生错误。
答案 1 :(得分:1)
我使用此网址尝试了您的示例:“https://spreadsheets.google.com/feeds/list/o13394135408524254648.240766968415752635/od6/public/values?alt=json”
工作正常.. 您正在接收数据。您可以通过编写
来访问数据resultFromUrl1[0].feed.entry
resultFromUrl2[0].feed.entry;