XMLHTTP请求不会到达xmlhttp.readyState == 4 && xmlhttp.status == 200状态

问题描述:

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

以前我在另一个页面上使用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,并从那里没有进一步。

+0

为什么你不能使用jQuery? –

+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

+0

好吧,请忘记xmlhttp.setRequestHeader(“Content-type”,“application/x-www-form-urlencoded”); xmlhttp.setRequestHeader(“Content-length”,data.length); xmlhttp.setRequestHeader(“Connection”,“close”); ,因为没有,它仍然无法正常工作... –

+0

@TTANTruong,你可以检查萤火虫/铬检查器,它试图访问的网址是什么。最可能的问题将与网址。我可以在你的网址中看到%。希望它是正确的。 –

+0

我没有得到它尝试打开的URL,并在新窗口中打开它,它工作:( –