2011-06-29 131 views
1

http://jsfiddle.net/FarqA/爲什麼這個xmlHttpRequest失敗>?

ajax_info.txt是我電腦上的有效文件。因爲這樣的錯誤返回:

Uncaught Error: INVALID_STATE_ERR DOM Exception 11 
+0

在您的計算機上,還是在您的服務器上?如果腳本位於http://'www.example.com/path/to/script.here','ajax_info.txt'應位於http://www.example.com/path/to/ajax_info。 txt' – Konerak

+0

在我的電腦上。我知道jsfiddle沒有ajax_info.txt的路徑,但我只是發佈這個向你展示我遇到的問題。 'ajax_info.txt'指的是我電腦上的'ajax_info.txt'。它會引起這個錯誤。 – 0x499602D2

+0

因此,您的服務器正在從您的計算機請求文件? – doNotCheckMyBlog

回答

1

許多瀏覽器會拒絕通過XMLHttpRequest加載本地文件作爲安全措施。 AJAX請求由Same Origin Policy限制,但作爲鏈接的維基百科頁面筆記,

同源檢查和相關機制的行爲是在一些極端情況不明確,比如對於那些協議沒有與其URL(文件:,數據:等)關聯的明確定義的主機名或端口。

即使使用相對URL加載本地文件,與使用file:協議加載文件相同。許多網絡瀏覽器限制了這一點,理由很充分 - 想象一下,在本地機器上運行一個惡意的HTML文件,可能會加載計算機上的任何文件並將其內容發佈到遠程服務器。

所以我的猜測是,問題是你正在嘗試加載本地文件。嘗試在本地或遠程網絡服務器上處理腳本,看看是否能解決問題。 (如果您安裝了Python,則可以轉至相關目錄並運行python -m SimpleHTTPServer 8000,然後在瀏覽器中轉至http://localhost:8000/)。

0

在腳本中的每個呼叫太HTTPRequest()正在創造一個新的請求對象,所以與onReadystateChange處理請求永遠不會得到發送,在發送請求沒有處理函數。這裏有一個應該工作的小提琴的更新版本:http://jsfiddle.net/HwYUS/