XMLHttpRequest,状态为0

时间:2014-03-20 12:39:15

标签: javascript xmlhttprequest ajax-request

我正在尝试使用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
}

有人可以帮助我吗?

2 个答案:

答案 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请求。