PHP在ajax中从不返回readyState 4或状态200
我有以下通用Ajax函数:PHP在ajax中从不返回readyState 4或状态200,php,javascript,ajax,readystate,Php,Javascript,Ajax,Readystate,我有以下通用Ajax函数: //run post request function ajaxPost (divid, parameters, file) { if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("M
//run post request
function ajaxPost (divid, parameters, file) {
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else {// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
alert ("ok")
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
alert ("ready");
alert (xmlhttp.responseText);
divid.innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST", file,true);
//Send the proper header information along with the request
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", parameters.length);
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.send(parameters);
}
问题在于该部分没有按预期工作:
xmlhttp.onreadystatechange=function() {
alert ("ok")
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
alert ("ready");
alert (xmlhttp.responseText);
divid.innerHTML=xmlhttp.responseText;
}
}
在浏览器中,我得到了预期的多个ok警报,但if语句中的语句从未触发。我认为这意味着php正在返回状态更新,但由于某些原因,它从未返回就绪代码。这怎么会发生?我不知道
有人能告诉我为什么我不能收到就绪代码吗
php本身不是问题所在:
<?php
echo "new";
?>
我已经测试了函数输入divid、参数和文件,这些都还可以。
此函数以前在一个单独的项目中工作。我会冒险猜测您的服务器没有返回有效的200响应,因此if语句xmlhttp.readyState==4&&xmlhttp.status==200永远不会等于true 尝试使用查看正在发出的请求(如果有)以及您得到的响应。如果您不使用Firefox,请尝试使用代理工具,如 除此之外,我强烈建议使用稳定的开源Javascript库,如。除了其他经过严格测试的代码外,它还内置了AJAX代码。这不仅可以节省您的时间,还可以消除您自己的代码进一步出错的可能性,例如
$.get('url.php', function(data) {
// 'data' is responseText
});
xmlhttp.readyState&&xmlhttp.status取决于使用的浏览器,而不是PHP脚本。最坏的情况是,PHP脚本可能不会重新返回状态200,如果发生这种情况,则意味着您的脚本中存在错误,有时会导致状态500或服务器返回404。
在任何情况下,尝试直接访问url,或者查看firebug日志窗口,这可能更容易调试
xmlhttp.open("POST", file,true);
文件的URL是否正确?
尝试从该URL回显。很抱歉,问题很简单。我花了整整一周的时间
xmlhttp与xmlhttp不同。所以它只会持续到状态3?检查readyState的不同值…@Felix King刚刚测试过。它到达状态4,但状态在发生后立即返回404。同时检查状态。也许你会得到404。编辑:好了。@YsoL8:这就是你的问题。xmlhttp.readyState==4&&xmlhttp.status==200计算结果为false。也许你的网址错了?或者你的服务器设置不正确。我现在知道我得到了404。我以前从未遇到过这个问题,我不知道如何解决它。请将此作为评论写下来。