2010-08-31 68 views
0

我使用此代碼加載文本文件的內容:爲什麼我無法在jQuery中加載特定的文本文件?

function go(){ 
     //var myFile = "c:/BMCclient.log"; 
     var myFile = "abc.html"; 
     $.get(myFile, function(data) { 
     alert (data); 
      $('#_content').html(data); 
      alert('Load was performed.'); 
      }); 

    } 

myFile = "abc.html";此方法成功執行,但是當我使用 myFile = "c:/BMCclient.log";那麼它拋出一個異常:

uncaught exception: [Exception... "Component returned failure code: 0x805e000a [nsIXMLHttpRequest.open]" nsresult: "0x805e000a (<unknown>)" location: "JS frame :: file:///C:/PIC/batch/personal/web/js/jquery/jquery-1.4.2.js :: anonymous :: line 5113" data: no] 

爲什麼它正在發生?

+0

網站如何使用HTTP GET訪問個人計算機上的文件? $ .get('c:/BMCclient.log',函數(數據)無效 – RPM1984 2010-08-31 07:11:35

+0

@RPM:如果它無效,那麼它是否應該拋出異常? – 2010-08-31 08:44:50

回答

4

這幾乎可以肯定是由於Same Origin Policy for file URLs(強調我的)的一個特定方面。

從Gecko 1.9開始,允許文件只讀取某些其他文件。 具體而言,只有當源文件的父目錄是目標文件的祖先目錄時,文件才能讀取其他文件。但是,無法以這種方式加載目錄。例如,如果您有一個訪問另一個文件bar.html的文件foo.html,則只有當bar.html與foo.html位於同一目錄中或者包含在與foo.html相同的目錄。

1

Ajax與本地文件系統不兼容,如果您設置了Web服務器,並且使用http://localhost來訪問該站點,那麼您的運氣會更好。
你很幸運HTML文件適合你 - 大多數瀏覽器都不允許這樣做。

0

發生這種情況是因爲JavaScript無法訪問計算機文件系統中的文件。如果這是可能的,那麼JS腳本可能會竊取您的文件數據,而您甚至不知道它的設計是如此。

+1

不完全正確:他正在發出請求本地文件系統 – 2010-08-31 07:11:57

+0

仍然無法通過盤符訪問文件 – RaYell 2010-08-31 07:30:54

0

您無法通過使用文件系統尋址JavaScript來加載文件。 $.get是一個HTTP GET請求,它將與服務器(例如本地主機)通信。

+0

確定嗎?我認爲*這是可能的,不能測試正確的方式。 – 2010-08-31 07:16:58

相關問題