2011-06-23 38 views
0

我想加載一個XML文件並獲取它的DOM對象。我認爲錯誤是與此代碼:問題xmlHttp.send()方法

// Takes an XML document and loads it and returns a DOM of the document 
function loadXMLDoc(filepath) 
{ 
    if (window.XMLHttpRequest) // code for IE7+, Firefox, Chrome, Opera, Safari 
    { 
     xmlhttp = new XMLHttpRequest(); 
    } 
    else // code for IE6, IE5 
    { 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.open("GET", filepath, false); 
    xmlhttp.send(); 
    xmlDoc = xmlhttp.responseXML; 
    return xmlDoc; 
} 

的代碼在xmlhttp.send()停止執行。我收到以下錯誤消息:

XMLHttpRequest cannot load file://localhost/Users/Dylan/programming/projects/personalpage/resources/cool-data.xml. Cross origin requests are only supported for HTTP. 
Uncaught Error: NETWORK_ERR: XMLHttpRequest Exception 101 

這突出了xmlhttp.send()行。我之前有這個工作,我不認爲我對文件做了任何修改。我知道的唯一區別是我現在正在我的本地機器上執行此操作。在我使用在線託管的IDE(cloud9)之前,所有這些文件都是在Web服務器上遠程執行的。此外,它在Windows上工作,我現在在Mac上。

編輯:我用參數調用函數:"../resources/items-data.xml" 和我所有的工作都在我的本地機器上。等級目錄是js,html,cssresources

+0

您無法加載本地xml文件我的文件:// url改爲嘗試https:// localhost/url ...希望這有助於 – Dinash

+0

您使用哪個參數調用了您的函數以及從哪個網站? XMLHTTPRequest應該執行嚴格的同源規則。 –

+0

實際上,如果你仍然在本地主機工作,同源策略將不會被強制實施。 –

回答

0

您可以在本地使用XHR(來源於file:),但有一個問題:Google Chrome和Firefox(我相信)會阻止您訪問除html文件之外的同一目錄中的文件以外的文件。也就是說

file://localhost/Users/Dylan/programming/projects/personalpage/index.htm

可以訪問

file://localhost/Users/Dylan/programming/projects/personalpage/abc.xml,或 file://localhost/Users/Dylan/programming/projects/personalpage/abc.json.js

但不

file://localhost/Users/Dylan/programming/projects/personalpage/resources/cool-data.xml,或 file://localhost/etc/passwd

這一限制僅有B e添加到最近的版本。我想這就是你首先沒有發現的原因。

P.S.下一次,通過使用jQuery或其他Javascript庫而不是重新發明輪子,讓每個人都受益。

+0

Gotcha。也許現在我只是把它們放在同一個目錄中。我正在做這個學習練習,因爲我剛進入Javascript並想在學習一堆API之前先學習一些東西。 – dbmikus