我有一个数组,我想在我的GET
请求中使用它中的每个值。像这样:
function something(){
let test = ['something', 'other', 'test'];
let httpRequest;
function makeRequest(){
httpRequest = new XMLHttpRequest;
httpRequest.onreadystatechange = test;
for(var i = 0; i < test.length; i++){
(function(i){
httpRequest.open('GET', 'https://test.com/' + test[i] , true);
})()}
httpeRequest.send();
}
}
我继续为test[i]
定义未定义,我不确定这是否正确通过httpRequest
传递数组。我将不胜感激任何帮助。
答案 0 :(得分:0)
你这样做的方式你必须创建一个这样的for循环:
for(var i = 0; i < test.length; i++){
makeRequest(test[i])
您必须为每个项目创建新请求。否则,您可以更改API以处理接收值数组并为其返回数据。
答案 1 :(得分:0)
undefined
获得test[i]
,因为您没有传递参数i
,而您希望将其作为 IIFE 中的参数:< / p>
function something() {
let test = ['something', 'other', 'test'];
let httpRequest;
function makeRequest() {
httpRequest = new XMLHttpRequest;
httpRequest.onreadystatechange = test;
for (var i = 0; i < test.length; i++) {
(function(i) {
console.log(test[i]);
httpRequest.open('GET', 'https://test.com/' + test[i], true);
httpRequest.send(); // send request within loop
})(i); // pass i here
}
// httpRequest.send();
}
makeRequest(); // call for testing
}
something(); // call for testing
&#13;
其他方面,代码中存在一些缺陷,例如:
如果您想要多次通话,可能需要在循环中发送请求httpRequest.send()
onreadystatechange
应定义function
;分配数组没有意义
对于同时通话,您可能需要创建多个XMLHttpRequest
请求。现在你只创建一个并更改网址,这些只会被中止。