2012-04-23 4 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

しかし、私は返すように)(it.Shouldn'tためのオープンのためのスクリプトの待ち時間を同期メカニズム(false)を使用しています:あなたはこのように、それが終了したときに呼び出される関数を作成する必要がありますか? – hariom

+0

非同期メカニズムを使用する方がはるかに優れています(特に、ブラウザが終了するまでブラウザをフリーズするのではなく、進捗状況を確認できるため)。 – Andrea

+0

あなたのコードを実行しようとしましたが、responseTextはまだfirefoxで完了していません。さらに、私は200の代わりに0のステータスコードを使用しなければなりませんでした。 https://bugzilla.mozilla.org/show_bug.cgi?id=331610 – hariom

関連する問題