gaggitのブログ

コーディング、ガジェット、TIPS関連、FX

XMLHttpRequestとXMLDocumentのデバッグで分かったこと

XMLHttpRequest周りで分かったことのメモ書きです。デバッグ環境は、IE11、FirefoxVer.4Xです(どちらもF12でデバッガーが立ち上がります)。

 前回、XMLHttpRequestのステータスが把握し切れなかったので、書き残します。

サンプルの2行目:

openメソッド時の第3引数は、true:非同期通信、false:同期通信の意味となりますが、同期通信時には、onreadystatechangeのイベントは発生しません。

サンプルの3行目:

Headerをちゃんと指定しないと、IEではresponseXMLのオブジェクトを取得できません。第2引数のxmlですが、application/x-www-form-urlencodedでも可能です。

サンプルの4行目:

sendメソッドは、onreadychangeの外側に配置。本来ならば、readyStateが1の時、使用したいが、onreadystatechangeがイベントを拾え切れていない。

サンプルの9行目と10行目:

9行目と10行目は、同じ意味合い。タグ名は、最上位の階層から追わなくても、大丈夫です。

itemは、同じタグの配列。内部の階層は、Childとなります。

サンプル

var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET","URL名",true);
xmlhttp.setRequestHeader("Content-Type","xml; charset=UTF-8");
xmlhttp.send();
xmlhttp.onreadystatechange = function(e){
  if (xmlhttp.readyState==4 && xmlhttp.status == 200){
    var doc = xmlhttp.responseXML;
    var x = doc.getElementsByTagName('p');
    output.innerHTML += x.item(0).firstChild.nodeValue;

  output.innerHTML += doc.getElementsByTagName('html').item(0).getElementsByTagName('body').item(0).getElementsByTagName('p').item(0).firstChild.nodeValue;

  }

};

outputは、bodyタグ内で、    <div id="output"></div>定義すれば、結果が出力されます。

今日もがじがじっと~♪