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>定義すれば、結果が出力されます。
今日もがじがじっと~♪