我正在尝试使用XMLHttpRequest,但是当我调用xmlhttp.send(post)时,我收到状态为1且状态为0的xmlhttp。我认为状态等于1是正常的,因为建立了平均服务器连接,但为什么状态0?不幸的是,对方没有收到我的请求。
function ajaxRequest(method, url, post, callback_fn){
var xmlhttp;
if (window.XMLHttpRequest) { //code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { //code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open(method,url,true);
if (method=="POST"){
xmlhttp.setRequestHeader("Content-Type", "text/plain; charset=UTF-8");
xmlhttp.setRequestHeader("Content-Length", post.length);
}
xmlhttp.send(post);
console.log("xmlhttp.readyState = " + xmlhttp.readyState); // = 1
console.log("xmlhttp.status = " + xmlhttp.status); // = 0
}
有人可以帮助我吗?
答案 0 :(得分:1)
当状态发生变化时,onreadystatechange
事件会触发,只有当有返回响应时才能检查请求的statusCode是什么(200,404等)
function ajaxRequest(method, url, post, callback_fn){
var xmlhttp;
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() {
if (xmlhttp.readyState == 4) {
console.log("xmlhttp.status = " + xmlhttp.status);
}
}
xmlhttp.open(method,url,true);
if (method=="POST"){
xmlhttp.setRequestHeader("Content-Type", "text/plain; charset=UTF-8");
xmlhttp.setRequestHeader("Content-Length", post.length);
}
xmlhttp.send(post);
}
答案 1 :(得分:1)
取消点击,查看是否停止状态为零。
onclick="ajaxRequest(...); return false;"
问题是页面正在刷新并终止Ajax请求。