2016-01-19 52 views
0

我正在嘗試使用XMLHttpRequest對象在JavaScript中做一個示例。我做了一個HTML文件,如下所示:鉻中的XMLHttpRequest錯誤

<!DOCTYPE HTML> 
<html> 
    <head> 
    <title> 
    AJAX simple example 
    </title> 
    </head> 
    <body> 
     <div id="mainContent"> 
      <h1>This is an AJAX example</h1> 
     </div> 
     <script src="script.js"></script> 
    </body> 
</html>` 

和我的劇本是這樣的:

//simple AJAX example: 
var myRequest; 
if (window.XMLHttpRequest) { 
    myRequest = new XMLHttpRequest(); 
    } else if (window.ActiveXObject) { 
    myRequest = new ActuveXObject("Microsoft.XMLHTTP"); 
} 
myRequst.onreadystatechange = function(){ 
    console.log(myRequest.readyState); 
    if(myRequest.readyState === 4){ 
     var p = document.createElement("p"); 
     var text = document.createTextNode(myRequest.responseText); 
     p.appendChild(text); 
     document.getElementById("mainContent").appendChild(p); 
    } 
}; 

myRequest.open("GET", "source.txt", true); 
myRequest.send(null); 

我一直在Chrome打開HTML文件時,得到一個錯誤,我得到在控制檯下面的錯誤:

XMLHttpRequest無法加載文件:.../ajaxRequestExample/source.txt。協議方案僅支持交叉源請求:http,data,chrome,chrome-extension,https,chrome-extension-resource。

+1

從'http://'而不是'file:///'運行它。還有可以使用的chrome標誌,但對於更實際的測試,強烈建議使用簡單的HTTP。如果你有python,那麼你可以用一個命令行來啓動一個內置的。 – dandavis

+0

你應該使用一些服務器來通過'ajax'從那裏獲取任何內容。即使你做了一些實驗,這也是一個很好的做法。 –

+0

我想,@ dandavis試圖建議你從**本地主機**運行你的文件..再加上,使用**微型AJAX **而不是https://code.google.com/p/microajax/ – ymz

回答

0

Chrome認爲您請求的資源來自與自身服務器不同的域。你的代碼看起來不錯,但似乎你沒有在後端運行服務器。 你的ajax應該與一個服務器交談,該服務器將'服務'你的'source.txt'。

所以,也許你可以嘗試運行偵聽http://localhost

一個服務器,然後再次嘗試您的腳本。

0

這是一個cross-domain-policy的問題,而不是鉻只問題。但是,當涉及到從本地mozilla加載文件的時候,firefox是一個你需要的限制較少的文件。如果您想要進一步開發以不同域名的http請求加載文件,您也可以檢查my question