我想知道是否有办法从两个不同的来源提取和使用 JSON 数据。目前,代码如下所示:
//JSON1
$.getJSON('url1',function(data){
$.each(data,function(key,val){
//code
});
});
//JSON2
$.getJSON('url2',function(data){
$.each(data,function(key,val){
//code
});
});
当我这样做时,我似乎从一个 JSON 函数创建的变量在另一个函数中不可用,这使得它们很难一起使用。 有没有更好的方法让这两者协同工作?
最佳答案
这个函数接受一个 url 数组和一个回调作为参数:
function getMultiJSON(urlList,callback) {
var respList = {};
var doneCount = 0;
for(var x = 0; x < urlList.length; x++) {
(function(url){
$.getJSON(url,function(data){
respList[url] = data;
doneCount++;
if(doneCount === urlList.length) {
callback(respList);
}
});
})(urlList[x]);
}
}
你会像这样使用它:
getMultiJSON(['url1','url2'],function(response) {
// in this case response would have 2 properties,
//
// response.url1 data for url1
// response.url2 data for url2
// continue logic here
});
您可能想要添加超时,因为如果任何 URL 加载失败,该函数将永远不会调用您的处理程序
关于javascript - 如何从两个不同的源中提取 JSON 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29371644/