2012-04-23 7 views
1

나는 단지 XHTML의 모든 div 엘리먼트를 여기 그냥 지나치려고한다. http://www.w3.org/. w3c.html에 HTML을 복사하고 다음 코드를 실행했습니다. 그러나 내 코드가 실패하여 responseText가 완전하지 않습니다.POST 요청이 사용되었지만 여전히 responseText가 완료되지 않았습니다. 이유가 무엇입니까?

처음에는 GET 요청을 사용했으며 이것이 문제 (문제라고 생각)라고 생각했지만 여전히 문제를 해결하지 못했습니다.

function traverseHtml() 
{ 
var xmlhttprequest=new XMLHttpRequest(); 
xmlhttprequest.open('POST','w3c.html',false); 
xmlhttprequest.send(null); 
var respText=xmlhttprequest.responseText; 
alert('The ResponseText is '+respText); 
/*var xml=(new DOMParser()).parseFromString(respText,'text/xml'); 
var result=xml.evaluate('//div',xml,null,XPathResult.ANY_TYPE,null); 
var node=result.iterateNext(); 
alert(node); 
while(node) 
{ 
alert(node.childNodes[0].nodeName); 
node=result.iterateNext() 
} 
*/ 
} 

답변

0

요청을 보낸 직후에 responseText 속성을 사용할 수 없습니다. 다음과 같이 완료되면 호출 할 함수를 만들어야합니다.

var xmlhttprequest; 

xmlhttprequest = new XMLHttpRequest(); 
xmlhttprequest.open('GET', 'w3c.html', true); 
xmlhttprequest.send(); 
xmlhttprequest.onreadystatechange = function() { 
    // Check if request done and it didn't fail 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
     alert('The ResponseText is '+xmlhttp.responseText); 
    } 
} 
+0

하지만 동기식 메커니즘 (false)을 사용하고 있습니다. 스크립트가 open()이 반환 될 때까지 기다리지 않아야합니까? – hariom

+0

비동기 메커니즘을 사용하는 것이 훨씬 더 좋습니다 (특히 브라우저가 종료 될 때까지 브라우저를 정지시키는 대신 진행 상황을 확인할 수 있으므로). – Andrea

+0

responseText가 여전히 firefox에서 완성되지 않았기 때문에 코드를 실행 해 보셨습니까? 더 나아가 200 대신 0의 상태 코드를 사용해야했습니다. https://bugzilla.mozilla.org/show_bug.cgi?id=331610 – hariom

관련 문제