2016-12-06 54 views
0

我有一個腳本將HTTP請求發送到網站以獲取文檔,文檔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()不會爲每個數組元素髮送?

+1

這個小提琴:https://jsfiddle.net/y8k9wmkh/似乎工作正常。你可以改變它來顯示你的問題 –

+0

謝謝@ChrisCharles,我正在使用'Repl.it'進行測試。在jsfiddle和jsbin中執行腳本按預期工作。 'Repl.it'似乎在循環的最後一次迭代中調用sendRequest。 – ethane

回答

0

由於@克里斯中的註釋提醒我嘗試的jsfiddle。

上面的代碼按照它應該執行的方式執行,它迭代數組併爲每個數組元素髮送一個HTTP請求。問題在於repl.itread-eval-print-loop編碼環境。切換到jsbin和jsfiddle產生了預期的結果。

Read about REPL

0

鉻(和Firefox)抱怨SSL證書無效,因此無法連接:

Failed to load resource: net::ERR_INSECURE_RESPONSE 
相關問題