我想在一个请求中多次调用API。目的是动态更改每个请求的日期参数,以便我一次获得不同日期的数据。
我在研究时看到了以下代码。它为一个请求存储我的数据:
var myjson;
$.getJSON("http://127.0.0.1:8080/horizon-update", function(json){
myjson = json;
});
但是如何使用不同的日期参数进行多次调用,同时将不同的输出作为json从API中存储?
答案 0 :(得分:0)
您可以简单地创建一个接受参数的函数,并使用参数两倍 - 一个用于请求,还用于“存储”结果
var myData = {};
function getDate(date) {
$.getJSON("http://127.0.0.1:8080/horizon-update?date="+date, function(data){
myData[date] = data;
});
}
getDate('date1');
getDate('date2');
getDate('date3');
但是,这些代码都没有考虑请求的异步性质,但问题中的代码也没有
注意:我在回调中更改了结果对象的名称,并且存储了结果的var以反映不是JSON 的事实 - 返回的数据可能是,但是jQuery。 getJSON将解析后的JSON作为普通的'javascript对象
返回你更有可能想要这样的东西
function getDate(date) {
return $.getJSON("http://127.0.0.1:8080/horizon-update?date="+date);
}
$.when(getDate('date1'), getDate('date2'), getDate('date3'))
.then(function(result1, result2, result3) {
// the results are in
})
当然,如果调用的数量是“动态的”,那就更复杂一些了(尤其是使用jQuery.when)
function getDate(date) {
return $.getJSON("http://127.0.0.1:8080/horizon-update?date="+date);
}
var dates = ['date1', 'date2', 'date3'];
$.when.apply($, dates.map(function(date) {
return getDate(date);
}).then(function() {
// the results are in arguments[]
})
现在,当jQuery.getJSON返回
thenable
(承诺)时 - 你可以使用Promise.all
使代码更容易 - 如果你想支持IE,你需要{{{ 3}} - 这个是Promise polyfill中链接的那个 - 但实际上有几十个选项
function getDate(date) {
return $.getJSON("http://127.0.0.1:8080/horizon-update?date="+date);
}
var dates = ['date1', 'date2', 'date3'];
Promise.all(dates.map(function(date) {
return getDate(date);
}).then(function(results) {
// results is an array of the results - in the same order as the dates array
})
答案 1 :(得分:0)
也许你可以使用
jquery.each(array,callback)
callback is a function(integer indexOfArray,object value)
or function(String propertyName,object value)
首先,您可以使用date参数构造整个url,然后将它们放入数组中。然后为每个url参数应用相同的函数 并使用jquery.each()方法,