我是 JS 和 jQuery 的新手。我正在尝试从返回键值对数组的 API 调用构建一个键值映射。
[{"key":"191","value":244}, ... , {"key":"920","value":130}]
我想出了这个ajax代码。但以下代码将需要从 loadMap 构造的 map 。如何将其更改为“followingFunction”在 loadMap 完成后运行的非 ajax 方式>
var mp = {};
(function loadMap() {
$.ajax({
type: 'GET',
url:'http://localhost:8080/xxx/api?start_date=2014-10-01&end_date=2014-11-01',
dataType: "json",
success: function(arr){
var out = "";
for(i = 0; i<arr.length; i++) {
mp[arr[i].key] = arr[i].value;
}
}
});
}());
//followingFunction which needs the information from mp
最佳答案
您可以通过两种不同的方式解决这个问题。
1) 在 success
回调结束时执行followingFunction
:
var mp = {};
function loadMap() {
$.ajax({
type: 'GET',
url:'http://localhost:8080/xxx/api?start_date=2014-10-01&end_date=2014-11-01',
dataType: "json",
success: function(arr){
var out = "";
for(i = 0; i<arr.length; i++) {
mp[arr[i].key] = arr[i].value;
}
followingFunction();
}
});
};
loadMap();
2) 将async
标志设置为false
(默认情况下该标志为true
)。这将导致同步执行时阻塞调用:
var mp = {};
function loadMap() {
$.ajax({
type: 'GET',
url:'http://localhost:8080/xxx/api?start_date=2014-10-01&end_date=2014-11-01',
dataType: "json",
async: false,
success: function(arr){
var out = "";
for(i = 0; i<arr.length; i++) {
mp[arr[i].key] = arr[i].value;
}
}
});
};
loadMap();
followingFunction();
关于javascript - 如何以非 Ajax 方式使用 jQuery(或 Javascript)从 API 调用中获取 JSON 结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28923279/