サンプルソース
作ってみました。
サーバーサイドは、StrutsでActionが実行されると、規定のXMLを書き出す.
JSP側は出力させるだけ。
<div id="ajax" align="center"></div>
サーバーから帰ってくるXMLはこんな感じ
<?xml version="1.0" encoding="EUC-JP"?> <root> <item> <name>ぜにがた</name> <no>1</no> </item> </root>
で。問題のJavaScript
function load(action) { try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { xmlhttp = false; } } if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp = new XMLHttpRequest(); } if (xmlhttp) { xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { // ↓ここからXMLの要素の取り出し // 受信したXMLの内容をテキスト表示, ajax1.innerHTML = xmlhttp.responseText; // JavaScript DOM 関数で扱える XMLDocument オブジェクトにする. var xmldoc = xmlhttp.responseXML; // 上手くいかない・・・!なぜだ! ajax2.innerHTML = xmlhttp.responseXML.documentElement.tagName; handlerFunc(xmldoc); } } xmlhttp.open('GET', action); xmlhttp.send(null); } } function handlerFunc(xmldoc) { var root = xmldoc.documentElement; if (root != null) { var items = root.childNodes; } else { // ルートエレメントが存在しない, 必ずここを通る・・・ ajax.innerHTML = "root element is none "; } }
ということ。
responseXML.documentElementで取り出した値が必ずNULLになってしまうのが問題。
うーむ、なぞい。
DOMとはなんぞや!
-
-
-
-
-
-
- -
-
-
-
-
-