Javascript 在调用API时动态更改url参数
我想在一个请求中多次调用API。其目的是动态更改每个请求的日期参数,以便一次获取不同日期的数据 我在研究时看到了以下代码。它为一个请求存储我的数据:Javascript 在调用API时动态更改url参数,javascript,Javascript,我想在一个请求中多次调用API。其目的是动态更改每个请求的日期参数,以便一次获取不同日期的数据 我在研究时看到了以下代码。它为一个请求存储我的数据: var myjson; $.getJSON("http://127.0.0.1:8080/horizon-update", function(json){ myjson = json; }); 但是,如何使用不同的日期参数进行多个调用,同时将不同的输出存储为来自API的json?您只需创建一个接受参数的函数,并将参数用于两个方面,一个用于
var myjson;
$.getJSON("http://127.0.0.1:8080/horizon-update", function(json){
myjson = json;
});
但是,如何使用不同的日期参数进行多个调用,同时将不同的输出存储为来自API的json?您只需创建一个接受参数的函数,并将参数用于两个方面,一个用于请求,另一个用于“存储”结果
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');
但是,这些代码都没有考虑到请求的异步性质,但问题中的代码也没有
注意:我在回调中更改了result对象的名称以及存储结果的var,以反映它不是JSON——返回的数据可能是,但jQuery.getJSON将解析后的JSON作为普通的ol'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)
现在,当jQuery.getJSON返回一个表(promise)-您可以使用promise.all
使代码变得更简单-如果您希望支持IE,您将需要一个-这是一个链接到中的-但实际上有几十个选项
也许你可以用
jquery.each(array,callback)
callback is a function(integer indexOfArray,object value)
or function(String propertyName,object value)
首先,您可以使用date参数构造整个url,然后将它们放入数组中。然后对每个url参数应用相同的函数
并使用jquery.each()方法,和不同的日期参数
-date参数?在您编写的代码中看不到任何参数posted@JaromandaX有可能这样做吗?也许你可以通过一些文档来帮助思考如何做。然后也许我可以尝试编写一些有意义的代码。我已经发布了一个答案。。。对…作一些假设course@JaromandaX非常感谢。展示一些使用承诺的东西。所有的可能都会有用。是的,就是放弃使用本机承诺
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
})
jquery.each(array,callback)
callback is a function(integer indexOfArray,object value)
or function(String propertyName,object value)