2012-10-08 2 views
2

내 Ajax 호출의 경우 xmlhttp 객체를 만들었습니다. 내가 "open"할 때 그것이 열리는 것 같지만 결코 xmlhttp.readyState == 4 && xmlhttp.status == 200 상태가되지 않습니다. window.open을 사용하여 숨겨진 페이지를 실행하려고 시도했지만 오류가 표시되지 않습니다.XMLHTTP 요청이 xmlhttp.readyState == 4 && xmlhttp.status == 200 상태가되지 않습니다.

이전에는 다른 페이지에서 AJAX를 사용했지만 제대로 작동했습니다. document.getElementById('Approval' + id).innerHTML = 'Loading...';가 작동하기 때문에 xmlhttp 요청이 열려 있다고 생각 합니다만, 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

Ok는 xmlhttp.setRequestHeader ("Content-type", "application/x-www-form-urlencoded")를 잊어 버립니다. xmlhttp.setRequestHeader ("Content-length", data.length); xmlhttp.setRequestHeader ("Connection", "close"); 그것 없이는 여전히 작동하지 않기 때문에 ... –

+0

@ ThaoTruong, 당신은 방화범/크롬 경위를 확인할 수 있습니까, 그것은 액세스하려고하는 URL은 무엇입니까. 대부분 문제는 URL과 관련이 있습니다. 나는 당신의 URL에 %를 볼 수 있습니다. 희망이 맞습니다. –

+0

나는 URL을 열어 새 창에서 열려고 시도했는데 성공했다. ( –

관련 문제