ドキュメントを取得するためにHTTPリクエストをWebサイトに送信するスクリプトがあり、ドキュメントIDは配列に保持されます。 HEADからのステータス(200 OK)に基づいて、各配列要素のリクエストを送信し、メッセージを返したいと思います。JavaScript - 配列内の各要素に対するHTTPリクエスト
問題は、URL配列をループすると、最後の配列要素だけを使用して複数の要求が送信され、他の要素は使用されないということです。
コード:
//send http request
function sendRequest(url) {
var newRequest = new XMLHttpRequest();
newRequest.onreadystatechange = function() {
if(newRequest.readyState == 4) {
if(newRequest.status == 200) {
console.log("loaded: " + url);
} else {
console.log("Failed to load: " + url);
}
}
}
newRequest.open("HEAD", url);
newRequest.send();
}
//send request for each url in array
for(var i = 0; i < urlArray.length; i++) {
//get document id and append to link
var address = "https://www.adsa.co.uk/library.dr/docs.aspx?id=" +
urlArray[i];
//console.log(address + "\n");
sendRequest(address);
}
出力(74は配列の最後の要素の値である):
このコンソールメッセージが生成されurlArray.length
回:
Failed to load: https://www.adsa.co.uk/library.dr/docs.aspx?id=74
任意のアイデア理由sendRequest()は各配列要素に対して送信されませんか?
このフィドル:https://jsfiddle.net/y8k9wmkh/はうまくいくようです。 –
ありがとう@ChrisCharles、私はテストのために 'Repl.it'を使っていました。 jsfiddleとjsbinでスクリプトを実行すると、期待どおりに動作しました。 'Repl.it'はループの最後の繰り返しでsendRequestを呼び出すように見えました。 – ethane