2011-07-22 60 views
0

我試圖從單獨的xml文件將元素標記加載到html文檔中時,我最近開始遇到JavaScript問題。我知道我已經正確啓用了XMLHttpRequest或者activeX(取決於互聯網瀏覽器),但是我在獲取XML文件並打開它來訪問它的標籤時遇到了問題。爲了打開這個文件,我試圖用:無法使用java腳本解析xml DOM(來自文件)

xhttp.open("GET",filepath,false); 
xhttp.send(); 
xmlDoc=xhttp.responseXML; 

的代碼出現,使其過去的第一線,但它能夠在第二絆倒。我想知道是否有人能夠澄清.send()的功能,以及如果服務器權限可能有問題; IE 7/8它告訴我,當這段代碼運行時,訪問被拒絕。

+0

的文件路徑指向另一個域? –

+0

文件路徑指向位於與此代碼運行所在的文件相同的域內的文件。 – Louis

回答

2

確保ajax請求從訪問資源發送到同一個域。

以這裏您的代碼示例,

xhttp.open("GET",filepath,false); 
xhttp.send(); 

您請求與HTTP GET方法的資源。根據規範[1],只有在XHR對象上調用send()方法後,纔會觸發此請求。如果方法是GET,send()的參數將被忽略。

現在,一旦被創建XHR對象,它通過不同的狀態[2]如

  • UNSENT(數值0)
  • OPENED(數值1)
  • HEADERS_RECEIVED(數值2)
  • LOADING(數值3)
  • DONE(數值4)

請求被觸發(即調用send())的那一刻,xhr對象將處於OPENED狀態。

現在,如果我們查看代碼「xmlDoc = xhttp.responseXML;」的第3行,那麼您很難清楚您嘗試讀取內容的狀態。閱讀的內容,最好的辦法是,當狀態達到4或DONE

只需修改代碼下面給出:

var xhr = new XMLHttpRequest(); 
    xhr.open("GET", somefilepath, true); 
    xhr.send(); 
    xhr.onreadystatechange = function() { 
    if(this.readyState == 4) { 
     xmlDoc=xhr.responseXML; 
    } 
    } 
+0

感謝您的解釋;有時候,在線資源可能很難理解這些主題。 – Louis