簡體   English   中英

無法使用Firefox以外的JavaScript讀取XML文件

[英]Cannot read XML file using javascript other than Firefox

我正在使用以下代碼來讀取外部xml文件:

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","myxmlfile.xml",false);
 xmlhttp.send();
 xmlDoc=xmlhttp.responseXML; 

但是以上代碼似乎僅在Firefox上有效,而在Chrome / IE / Opera上無效。

在Chrome瀏覽器中,控制台出現錯誤,因為不允許跨域訪問,但是我的xml文件,js文件和html文件都位於本地硬盤驅動器的同一文件夾中。

有什么幫助嗎?

謝謝。

您可能在沒有http服務器的情況下在本地對其進行測試。

從根本上講,Ajax請求必須使用相同的域,如果您向其他站點發出Ajax請求,則該請求將被瀏覽器阻止(這是一項安全功能,可以防止人們從其他網站讀取瀏覽器所有者的數據)。 大多數瀏覽器都以相同的方式阻止對本地文件系統的訪問,以防止(例如)惡意電子郵件附件。 您會收到類似XMLHttpRequest cannot load file:///path/to/your/data.html. Origin null is not allowed by Access-Control-Allow-Origin.的錯誤XMLHttpRequest cannot load file:///path/to/your/data.html. Origin null is not allowed by Access-Control-Allow-Origin. XMLHttpRequest cannot load file:///path/to/your/data.html. Origin null is not allowed by Access-Control-Allow-Origin.

如果您使用的是Linux或Mac,或者已安裝python,則啟動http服務器的最簡單方法是在html文件的根目錄中使用python -m SimpleHTTPServer命令,然后可以在http://localhost:8000/file.html查看它們http://localhost:8000/file.html如果您在Windows上)則可能需要配置IIS(請注意,IIS默認不支持某些文件擴展名,例如.json ,因此您可能必須對其進行配置)。

如果您仍然希望/需要在本地進行測試而不必擺弄http服務器,則可以使用--allow-file-access-from-files運行Chrome(更新Chrome瀏覽器exe的快捷方式或從終端運行Chrome使用此開關)。

如前所述,您需要將文件放入http服務器以正確測試。 您可以使用本地Apache實例對其進行正確測試。 這樣,您的ajax調用將不會被瀏覽器阻止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM