0

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

有人能帮我吗?

4

2 回答 2

2

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);
}
于 2014-03-20T12:43:37.927 回答
1

取消单击并查看它是否停止状态为零。

onclick="ajaxRequest(...); return false;"

问题是页面正在刷新并终止 Ajax 请求。

于 2014-03-20T13:25:21.623 回答