2012-01-10 8 views
0

シンプルなHTMLを使ってXHRを試しましたが、httpxml.responseTextから応答がありません。 しかし、スクリプトはサファリコンソールで動作します。XMLHttpRequestに詰め込まれる

<html><head></head><body> 
     <div id="myDiv"></div> 
     <button type="button" onclick="loadXMLDoc()">Change Content</button> 
     <script type="text/javascript"> 
      function loadXMLDoc() 
      { 
      httpxml = new window.XMLHttpRequest; 
      httpxml.open('GET','resources/xml/test.xml',true); 
      httpxml.send(); 
      text = httpxml.responseText; 
      alert(text);// there's no text in the alert window 
      document.getElementById("myDiv").innerHTML=text; 
      } 
     </script> 
    </body> 
</html> 
+0

あなたは間違ってそれに近づけるたどの書籍/チュートリアルを読みましたか? – BalusC

+0

@BalusCそれはW3schoolのAjaxのツイートだ、私は完全なテストを勉強することを躊躇し、非同期的にポイントを逃す – mko

答えて

0

あなたは前のreadyStateテストを追加する必要があります。

function loadXMLDoc() 
{ 
    httpxml = new window.XMLHttpRequest(); 
    httpxml.open('GET','yourpage.xml',true); 
    httpxml.send(null); 
    httpxml.onreadystatechange = function() { 
    if(httpxml.readyState == 4) { 
    text = httpxml.responseText; 
    alert(text); 
    document.getElementById("myDiv").innerHTML=text; 
    } 
    } 
} 

しかし、このために、私は、jqueryのように簡単に使用します。

$('#mybutton').click(function(){ 
    $.GET('yourpage.xml',function(data){ 
     $('#mydiv').html(data); 
    }); 
}); 
+0

魅力のように動作します!そして便利なjQueryバージョンを指摘してくれてありがとう! – mko

+0

それがあなたや誰かを助けるなら、それは素晴らしいです!そして私は自分自身のスクリプトのバグに対する多くの答えをここに見つけました。 – Valky

1

httpxml.openの3番目のパラメータとして "true"を渡すのは私だけですか?つまり、「要求を非同期に実行する」ことを意味します。このパラメータを "false"に変更するか、ネットワーク操作が完了したときに呼び出されるreadystateコールバック関数を設定します。ここ

より良いコード例: http://www.w3.org/TR/XMLHttpRequest/

+0

ここで公式の文書を入れていただきありがとう、良いリソースを学ぶ – mko

関連する問題