2015-09-18 79 views
0

我在試圖使用JavaScript來解析XML文檔,並繼續運行到以下問題之中是:XMLHttpRequest.status沒有返回值

當我嘗試使用xmlhttp.status來檢查我正在嘗試獲取的文件是否存在,只要我嘗試獲取的文件不存在,就會得到「訪問受限URI被拒絕」錯誤。

爲了說明,在運行下面的代碼時,我得到了上述錯誤。

function loadXML(input_url) { 
    var xmlDoc; 
    xmlhttp = new XMLHttpRequest(); 
    xmlhttp.open("GET",input_url,false); 
    xmlhttp.send(); 

    if (xmlhttp.status == 200) {  //File exists 
     xmlDoc = xmlhttp.responseXML; 
     return xmlDoc 
    } 
    else if (xmlhttp.status == 404) { //File doesn't exist 
     alert("Hey! The file doesn't exist!"); 
     return; 
    } 

    var url = prompt("Please enter a URL here: :"); 
    var XMLDoc = loadXML(url); 

所以,當我運行上面的代碼與有效的網址,一切都很好,丹迪。

但是,它只有當我嘗試訪問一個無效的URL(其中該文件不存在),我遇到了上述問題。

我看了其他回覆,我實際上使用try/catch表達式取得了一些進展。

但是,對於我的生活,我無法弄清楚爲什麼進入else if塊會產生這個錯誤。任何意見/方向,將不勝感激。

回答

0

試着以異步方式做到這一點。

xmlhttp.onreadystatechange = function() { 
    if (xmlhttp.readyState === 4) { 
     if(xmlhttp.status === 200) 
      /* do stuff */ 
     else 
      /* do other stuff */ 
    } else 
     console.info("state is " + req.readyState); 
} 
xmlhttp.open("GET", input_url, true); // note the true parameter for async 
xmlhttp.send(null); 

console.info會讓你知道,如果請求在狀態「封殺」,但它不應該是即使URL無效或東西的情況下,你應該總是在第4步結束。

試試這個,讓我知道。

此外,請務必閱讀https://developer.mozilla.org/fr/docs/Web/API/XMLHttpRequest,因爲似乎對默認情況下最大併發請求的限制等。