2011-08-01 2 views
7

내가 디버깅해야하는 자바 스크립트가 있습니다.XMLHttpRequest.DONE 값에 문제가 있습니까?

var httpRequest = new XMLHttpRequest(); 
httpRequest.onreadystatechange = function() { 
    if (this.readyState === XMLHttpRequest.DONE) { 
     if (this.status === 200) { 
      success = true; 
     } 
    } 
}; 

Chrome과 Firefox를 단계별로 살펴보면 첫 번째 "if"가 실패한 것으로 나타났습니다. 나는 "this.readyState"가 "1"로 설정되어 있음을 알 수 있습니다. W3C 스펙에 의한 판단은 "OPENED"를 의미해야합니다. Firebug의 ".DONE"세그먼트를 가리키면 "4"가 아닌 정의되지 않은 것으로 표시됩니다.

http://www.w3.org/TR/XMLHttpRequest/#states

Firefox 및 Chrome에서이 값이 지원되지 않는 문제가 있습니까?

미리 감사드립니다!

+0

가끔 가끔 httpRequest.DONE 이상한 –

답변

8

귀하의 경우 숫자 값 4 중 하나에 대해 readyState를 확인해야합니다.

+0

좋아,하지만 XMLHttpRequest.DONE 작동, 언젠가는 같은 파이어 폭스,하지, 작동, 그게 분류입니다. 고마워요! – MeanwhileInHell

+5

작은 메모 :'XMLHttpRequest.DONE' *은 숫자 값 '4'를 보유해야하지만, IE8 이하에서는 구현되지 않습니다. – Blaise

5

일부 브라우저는 XMLHttpRequest.Done 속성을 알지 못하므로 먼저 'if'전에 다음과 같이 확인해야합니다.

var DONE = (typeof XMLHttpRequest.Done !== 'undefined') ? XMLHttpRequest.Done : 4; 
+1

답안에서 OP의 질문에 대한 답변을 설명해주십시오. 이 코드는 많은 문맥이없는 코드 스 니펫 일뿐입니다. –

관련 문제