2011-02-15 140 views
0

我遇到了AJAX问题,其中PHP返回的状态码为0.我在本地域上运行它,并且我不明白为什么它不会返回任何内容。它写跳回到bar.txt,但它什么都不返回到AJAX请求,状态代码为0。PHP返回状态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"; 
?> 

回答

3

AJAX的基础是它是异步 Javascript和Xml。在JavaScript转到下一个语句之前,您的服务器没有时间做出响应。状态为零,因为还没有发生任何事情。您需要等待响应同步,才能有一个回调方法,一旦完成就显示响应。另外,如果readystate更改并不是错误,它不是4.

+0

好吧,我做到了同步,并以某种方式解决了它,但是不应该在readystate更改时触发onreadystatechange事件吗? – enbug 2011-02-15 17:21:53