2014-04-23 54 views
0

我有以下功能在頁面加載執行:我在閱讀使用Javascript文本文件的嘗試失敗

function get_words() 
{ 
    var rawFile = new XMLHttpRequest(); 
    rawFile.open("GET", "file:///C:\Users\myMachineName\Documents\PersonalSite_Improved\wordsEn.txt", true); 
    rawFile.onreadystatechange = function() 
    { 
     if (rawFile.readyState === 4) 
     { 
      if (rawFile.status === 200 || rawFile.status == 0) 
      { 
       var allText = rawFile.responseText; 
       alert(allText); 
      } 
     } 
     rawFile.send(null); 
    } 
} 

這是我自己用的程序,從這個S.O.線程:Javascript - read local text file

我會承認我並不完全瞭解程序。但是,我可以明顯看到,如果頁面正常工作,我將獲得文本文件內容的警報。我使用console.log()運行了一些測試,以確定從未輸入第一個if語句。但是因爲我不知道這裏發生了什麼,所以我不知道如何解決這個問題。

任何幫助?

+0

您是否嘗試閱讀rawFile.readyState以查看值? – sam

+1

你已經有了'.send()'在你的ready handler中。它永遠不會被稱爲。另外,你的URL應該有所有的反斜槓字符加倍。但總體而言,由於答案中解釋的原因,該機制無法正常工作。 – Pointy

回答

1

您嘗試閱讀的文檔必須由HTTP服務器提供,您無法從硬盤或計算機上提取本地文件。原因很簡單,因爲如果JavaScript能夠讀取本地機器上的文件,每個人都可以打開,查看和閱讀人們計算機上的所有內容。只需運行一個本地HTTP服務器,如WampServer或其他類似的東西。

+0

您能否向我解釋一下,如果我有訪問本地文件的JavaScript代碼,別人可能會破解我的機器?我是網絡編程的新手,並試圖理解事物的後勤。 – user3537336

+0

與JavaScript本身並沒有太大關係的是您正在編寫和測試本地引發的安全問題,如果JavaScript允許訪問本地計算機的文件和數據,它將會發布到面向Web的平臺(如WebServer)的任何內容。 請記住,根本不存在安全問題,因爲JavaScript不允許我們讀取,查看和寫入本地文件。我只是假設作爲一個例子。 – DoctorLouie