XMLHTTP请求没有到达xmlhttp.readyState == 4&& xmlhttp.status == 200州

时间:2012-10-08 16:30:27

标签: ajax xmlhttprequest

对于我的Ajax调用,我创建了一个xmlhttp对象。当我“打开”它时,我猜它确实打开但它永远不会进入xmlhttp.readyState == 4 && xmlhttp.status == 200状态。我尝试使用window.open运行隐藏页面,但没有显示错误。

以前我在其他页面上使用过AJAX,它运行得很好。我确实认为xmlhttp请求已打开,因为document.getElementById('Approval' + id).innerHTML = 'Loading...';确实有效,但它根本无法进入xmlhttp.readyState == 4 && xmlhttp.status == 200状态。

相反,在它显示“正在加载...”之后不久,我将其设计为显示(这是异常的,因为隐藏的页面发送的电子邮件通常需要很长时间),它显示了之前的文本。我之前没遇到过这个。

以下是我的代码

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 && xmlhttp.status == 200) {

                    document.getElementById('Approval' + id).innerHTML = xmlhttp.responseText;
                    //alert(xmlhttp.responseText);
                }

                else {

                    document.getElementById('Approval' + id).innerHTML = 'Loading...';
                }
            }

            xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            xmlhttp.setRequestHeader("Content-length", data.length);
            xmlhttp.setRequestHeader("Connection", "close");
            xmlhttp.open("GET", "AJAX%20pages/UploadDecisionAbsenceRequest.aspx?decision=" + decision + '&position=' + position + '&id=' + id, true);
            xmlhttp.send();

            //window.open("AJAX%20pages/UploadDecisionAbsenceRequest.aspx?decision=" + decision + '&position=' + position + '&id=' + id,'','width=200, height = 100');

在我尝试通过编写这行代码来了解xmlhttp请求的状态后:

document.getElementById('Approval' + id).innerHTML = "Now (readystate) " + xmlhttp.readystate + " and status " + xmlhttp.status;

我得到的只是现在(readystate)未定义和状态0,从那里它没有进一步。

1 个答案:

答案 0 :(得分:0)

xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
打开请求前无法使用

。此后检查天气data.length是否正确。

使用

    xmlhttp.open("GET", "AJAX%20pages/UploadDecisionAbsenceRequest.aspx?decision=" + decision + '&position=' + position + '&id=' + id, true);
  xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            xmlhttp.setRequestHeader("Content-length", data.length);
            xmlhttp.setRequestHeader("Connection", "close");

            xmlhttp.send();

<强> DEMO