2017-03-31 33 views
0

這是我第一次的Ajax程序,並因爲我不知道在哪裏/是什麼問題,我無法修復的代碼。URL在阿賈克斯的open()

使用調試器時出現的錯誤(我無法解釋)是, XMLHttpRequest無法加載http://localhost/function.txt。請求的資源上沒有「Access-Control-Allow-Origin」標題。因此不允許原產地'null'訪問。

function calling() 
{ 
    var x; 
    if (window.XMLHttpRequest) { 
    x = new XMLHttpRequest(); 
    } else { 

    x = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    x.onreadystatechange = function(){ 
     if(this.readyState == 4 && this.status == 200) 
     { 
      document.getElementById("block").innerHTML = this.responseText; 
     } 

    }; 
    x.open("GET", "http://localhost/function.txt",true); 
    x.send(); 
} 

function.txt

<html> 
<head></head> 
<body> 
<h2>Ajax is working</h2> 
</body> 
</html> 
+0

本地主機有誰聽80端口的服務器?如果你有一個,這個服務器接受CORS請求? –

回答

0

位於同一位置的function.txt你的js?

有關CORS的更多信息,看看這個鏈接:https://www.html5rocks.com/en/tutorials/cors/

UPDATE: 這對我的作品,我覺得有可能是一些與你的Apache設置...

function calling() 
{ 
    var xhr = new XMLHttpRequest(), 
     method = "GET", 
     url = "function.txt"; 

    xhr.open(method, url, true); 
    xhr.onreadystatechange = function() { 
      if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) { 
       alert(xhr.responseText); 
      } 
     }; 
    xhr.send(); 
} 

calling(); 
+0

是的,我的js,html和.txt文件位於同一位置 –

+0

嘗試使用「function.txt」而不是「http://localhost/function.txt」作爲URL。 – Th1m0

+0

這是更改URL後得到的錯誤:XMLHttpRequest無法加載file:/// C:/Apache%20Tomcat/apache-tomcat-9.0.0.M18/webapps/jsp/function.txt。協議方案僅支持交叉源請求:http,data,chrome,chrome-extension,https,chrome-extension-resource。 –

0

你不能讓Ajax調用從不同的域上的網址,如果說域名沒有明確允許它(通過「訪問控制允許來源」標頭)。 您的錯誤意味着您正在從另一個域進行Ajax調用。如果您的function.txt文件與您的js位於相同的位置,請嘗試在您的.open()中使用相對路徑。

0

您正在嘗試一個CORS請求,這是不安全的,是由默認的瀏覽器禁止。如果你在控制目標網站,你可以enable CORS。如果情況並非如此,那麼您將需要編寫一個將用作代理的頁面,也就是說,您將向該頁面發送請求,而不是目標站點的頁面。該頁面又將該請求發送到目標頁面並將輸出發送到瀏覽器。雖然這是一個可行的解決方案,但您需要確保目標站點的所有絕對路徑都處理得當。