我遇到了AJAX的问题,PHP返回的状态代码为0.我在本地域上运行它,我不明白为什么它不会返回任何内容。它写入bar.txt,但它不会向AJAX请求返回任何内容,状态代码为0。
Ajax请求:
function sendRequestToButler(requestText, callback) {
try {
var request = new XMLHttpRequest();
request.onreadystatechange = function() {if(request.readyState == 4 && request.status == 200) {callback(request);} else {alert("Error: AJAX: readyState: " + request.readyState + " status: " + request.status);}};
request.open("POST", "foo.php", true);
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.setRequestHeader("Content-length", requestText.length);
request.setRequestHeader("Connection", "close");
request.send(request);
} catch(e) {alert("error"); return "CouldNotCompleteRequest";}
}
foo.php:
<?php
file_put_contents('bar.txt', "facepalm", LOCK_EX);
echo "foobar";
?>
答案 0 :(得分:3)
AJAX的基础是异步 Javascript和Xml。在javascript转到下一个语句之前,您的服务器没有时间做出响应。状态为零,因为还没有发生任何事情。您需要同步等待响应以获得一个回调方法,该方法在响应完成后显示响应。此外,如果状态更改并且不是4,则不是错误。