2011-06-22 92 views
0

我是JavaScript新手,並且有一些數據存儲在我想在我的網頁上使用的txt文件中。JavaScript XMLHttpRequest語法錯誤

然而,當我發送一個XMLHttpRequest來獲取文本文件的Firefox拋出一個語法錯誤的.TXT我想在讀的第一線

這裏是我的代碼:

var txtFile = new XMLHttpRequest(); 

    txtFile.onreadystatechange = function() { 

     if (txtFile.readyState === 4) { 

       if (txtFile.status === 200) {    
        allText = txtFile.responseText; 
        lines = txtFile.responseText.split("\n"); 
      } 
     } 
    } 
    txtFile.open("GET", "File:\\\myinfo.txt", true);  
    txtFile.send(null); 

以下是從Firefox的錯誤信息上寫着:

語法錯誤: 「文件:\\ myinfo.txt」 線路:1

然後在這裏它有這條線上的文字

我認爲這可能意味着我不允許訪問本地文件,這是讓我知道這一點的firefox的方式。

有沒有人有這個錯誤的經驗或知道這是什麼意思?

+0

您是否嘗試過'txtFile.open(「GET」,「myinfo.txt」,true);' –

+0

XMLHttpRequest只允許您創建對同一個域的HTTP請求。 – duri

回答

2

反斜槓字符在字符串中有特殊含義。它表示下一個字符是在某些方面特殊的,比如你可以用反斜槓逃脫它包括在字符串中報價:

'It\'s a string' 

爲了包括一個反斜槓,你把它兩次:

'This is one backslash \\ character' 

所以,在你的例子中,你有\\\m。前兩個斜線變成一個斜線,並且\m無法識別爲有效的轉義序列,因此您會收到錯誤。

您的網址更改爲使用正斜槓(不具備這種特殊的意義,是正確類型的斜槓在URL中使用反正),或雙你的反斜線:

"file:///myinfo.txt" 
"file:\\\\\\myinfo.txt" 

另外,請注意這個URL實際上並不指向任何東西,它應該是這樣的:

"file:///C:/myinfo.txt" 

此外,如上面所指出的,XMLHttpRequest的只能針對相同的域,因爲它是在託管的網頁,所以如果你的頁面在http://www.example.com/上,你只能訪問re消息來源http://www.example.com/

+0

啊,我看到了問題,謝謝你的指針。 – funtimescoder