2012-10-08 26 views
2

對於我的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

我該怎麼做? –

回答

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,並在新窗口中打開它,它工作:( –

相關問題