Javascript ajaxopen()中的URL

Javascript ajaxopen()中的URL,javascript,ajax,Javascript,Ajax,这是我的第一个Ajax程序,我无法修复代码,因为我不确定问题出在哪里/什么地方 使用调试器时出现的错误(我无法解释)是, 无法加载XMLHttpRequest。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源“null” function calling() { var x; if (window.XMLHttpRequest) { x = new XMLHttpRequest(); } else {

这是我的第一个Ajax程序,我无法修复代码,因为我不确定问题出在哪里/什么地方

使用调试器时出现的错误(我无法解释)是, 无法加载XMLHttpRequest。请求的资源上不存在“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>

Ajax正在工作

您的js是否与function.txt位于同一位置

有关CORS的更多信息,请查看以下链接:

更新: 这对我来说很有用,我想你的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();

如果某个域未明确允许(通过“Access Control allow Origin”标题),则无法从其他域对url进行Ajax调用。
您的错误意味着您正在从另一个域进行Ajax调用。如果function.txt文件与js位于同一位置,请尝试在
.open()
中使用相对路径。您正在尝试CORS请求,这是不安全的,默认情况下浏览器禁止。如果您控制目标站点,则可以。如果不是这样,那么您将需要编写一个用作代理的页面,也就是说,您将向该页面而不是目标站点的页面发送请求。该页面会将请求发送到目标页面,并将输出发送到浏览器。虽然这是一个可行的解决方案,但您需要确保目标站点的所有绝对路径都得到了很好的处理。

localhost是否有一台监听端口80的服务器?如果你有一个,这个服务器接受CORS请求?这里的人给了你很好的答案,你应该投票选出一个作为最佳答案。是的,我的js、html和.txt文件在同一个位置。这是我在更改URL后得到的错误:XMLHttpRequest无法加载file:///C:/Apache%20Tomcat/apache-tomcat-9.0.0.M18/webapps/jsp/function.txt。跨源请求仅支持协议方案:http、数据、chrome、chrome扩展、https、chrome扩展资源。