我浏览了一些其他帖子来回答我的问题,但我似乎无法理解如何解决它。
问题似乎是我的代码正在请求跨域请求;我无法在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,从一开始就不顺利。
答案 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);
}