在本地文件上运行带或不带xampp的简单基本AJAX

时间:2015-12-09 04:30:00

标签: javascript html ajax

我浏览了一些其他帖子来回答我的问题,但我似乎无法理解如何解决它。

问题似乎是我的代码正在请求跨域请求;我无法在file://

上运行简单的html ajax

所以我所做的就是使用xampp在localhost上运行程序

这是我的目录http://localhost/practice/practice.php

在这个php中,代码看起来像这样

function ajaxor(){
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange=function() {
    if (xhttp.readyState == 4 && xhttp.status == 200) {
      document.getElementById("demo").innerHTML = xhttp.responseText;
    }
  };
  xhttp.open("GET", "practice.txt", true);
  xhttp.send();

  alert(xhttp.status);
}

php文件似乎运行正常但是当我提醒xhttp.status它输出0而不是200。

我真的很困惑和困惑。这是我第一次尝试使用AJAX,从一开始就不顺利。

2 个答案:

答案 0 :(得分:1)

你看错了地方,因为你正在使用异步版本的ajax。如果发生某些事情,所有事情都发生在函数onreadystatechange内。因此,将alert(xhttp.status);放在行document.getElementById("demo").innerHTML = xhttp.responseText;下的该函数中。如果一切正常,您将看到200,否则如果发生错误,您将看不到任何内容。

function ajaxor(){
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange=function() {
    if (xhttp.readyState == 4 && xhttp.status == 200) {
      document.getElementById("demo").innerHTML = xhttp.responseText;
      alert(xhttp.status + " should be 200");
    } else {
      alert(xhttp.status + " en error happend");
    }
  };
  xhttp.open("GET", "practice.txt", true);
  xhttp.send();
}

这假设所有文件名和路径都是正确的,或者当然。

答案 1 :(得分:0)

readyState有多种状态。

从0变为4:

0:请求未初始化

1:建立服务器连接

2:收到请求

3:处理请求

4:请求已完成且响应已准备好

在readyState到达其最终状态之前,您的警报正在到达,因此在函数甚至可以执行之前。确保尝试在此功能中添加其他警报,并查看首先出现的警报。 :)

function ajaxor(){
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange=function() {
  if (xhttp.readyState == 4 && xhttp.status == 200) {
    document.getElementById("demo").innerHTML = xhttp.responseText;
    alert("Status 1:"+xhttp.status);
  }
};
xhttp.open("GET", "practice.txt", true);
xhttp.send();

alert("Status 2:"+xhttp.status);
}