Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在调用API时动态更改url参数_Javascript - Fatal编程技术网

Javascript 在调用API时动态更改url参数

Javascript 在调用API时动态更改url参数,javascript,Javascript,我想在一个请求中多次调用API。其目的是动态更改每个请求的日期参数,以便一次获取不同日期的数据 我在研究时看到了以下代码。它为一个请求存储我的数据: var myjson; $.getJSON("http://127.0.0.1:8080/horizon-update", function(json){ myjson = json; }); 但是,如何使用不同的日期参数进行多个调用,同时将不同的输出存储为来自API的json?您只需创建一个接受参数的函数,并将参数用于两个方面,一个用于

我想在一个请求中多次调用API。其目的是动态更改每个请求的日期参数,以便一次获取不同日期的数据

我在研究时看到了以下代码。它为一个请求存储我的数据:

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)