2010-11-08 72 views
0

我正在構建一個本地html文件,以動態顯示XML文件中的一些數據並使用Chrome的Inspector我想我的XML文件未被解析,因爲它「不在Web服務器上」託管Ajax解析本地XML

XMLHttpRequest cannot load data.xml. Cross origin requests are only supported for HTTP. 

我知道有幾個標誌,我可以通過Chrome瀏覽器/ Web瀏覽器來解決此限制,但我尋找到了一些替代方法。我可能不得不將這些文件分發給幾個人,並教他們如何將標誌傳遞給瀏覽器對我來說不是一種選擇。將它們託管在Web服務器上也不是一個選項。

非常感謝。

回答

1

除非您設置本地服務器或在本地託管XML文件,否則無ghost。 Ajax必須遵循same origin policy

0

如何設置本地網絡服務器?即使是新手也應該​​易於安裝XAMPP。告訴他們把文件放到htdocs文件夾中,運行xampp並啓動apache服務器。

+0

我明確指出我不想爲此運行網絡服務器。 – nmuntz 2010-11-08 22:42:38

+0

@nmuntz我也會提示XAMPP,我不覺得你的說明*清楚地說*不對本地web服務器說。 – zzzzBov 2010-11-08 22:53:19

+0

我認爲沒有更簡單的方法來做到這一點。對於大多數人來說,安裝xampp比改變一些模糊的瀏覽器標誌更容易。 – arifwn 2010-11-08 22:58:35

1

如果你願意用你可以用jQuery's AJAX method執行跨域請求庫(我不完全肯定的是,jQuery將支持你想要做什麼)。 JSONP的作品,但你有XML數據...

無論如何,你可以嘗試加載它在script標籤,看看你是否可以不破壞腳本得到innerHTML值;一旦你完成從中獲取文本,從頁面中刪除腳本。在瀏覽器嘗試解析腳本之前,您可以通過將onloadonreadystatechange事件附加到腳本元素來獲取數據。

var s = document.createElement('script'); 
s.src = '/path/to/file.xml'; 
s.onload = s.onreadystatechange = getData; 
function getData(e) 
{ 
    //get the text out of the script element 
    //remove the event handler from the script element 
    //remove the script from the page 
} 
document.getElementsByTagName('body')[0].appendChild(s); 

我沒有測試它,但它可能工作。

0

除非有令人信服的理由有一個單獨的html和xml文件,否則您可以直接將數據放在html文件中。

0

恐怕如果chrome只提供了你不喜歡應用的選項,你的應用程序和chrome就不會在一起。通過iframe訪問&對象does not工作太多,load() - createDocument的方法不被chrome支持(如果它的確我猜你有同樣的錯誤)。
無論您嘗試什麼都會通過Chrome的限制,什麼都不好,因爲我認爲他們有很好的理由來設置這些限制。