XMLHttp でサーバーデータを取得

  cdata-section の無いデータを取得する



本来、XML データ内に HTML を含めたい場合は を使用しますが、
使用されていない場合( または、XML の一部を切り出す場合 ) の方法を以下で示します

  
<?xml version="1.0" encoding="shift_jis" ?>
<combodata>
	<list>
		<SELECT name="combo">
		<OPTION value="1">データ1</OPTION>
		<OPTION value="2">データ2</OPTION>
		<OPTION value="3">データ3</OPTION>
		</SELECT>
	</list>
	<list>
		<SELECT name="syozoku">
		<OPTION value="1">総務部</OPTION>
		<OPTION value="2">営業部</OPTION>
		<OPTION value="3">技術部</OPTION>
		</SELECT>
	</list>
</combodata>
  

  
<HTML>
<HEAD>
<META http-equiv="content-type" content="text/html; charset=shift_jis">
<SCRIPT language=JavaScript>

	var dom,bIE;
	var objXMLHttp;

	if ( document.all ) {
		bIE = true;
		dom = new ActiveXObject("Msxml2.DOMDocument.3.0");
		objXMLHttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
	}
	else {
		bIE = false;
		dom = document.implementation.createDocument("", "", null);
		objXMLHttp = new XMLHttpRequest();
	}


function GetServerData( ) {

	var xml,objNodeList;

	// 最後のパラメータの false は、同期実行を意味します
	objXMLHttp.open(
		"GET",
		"sjis_combo.xml"
		, false );
	objXMLHttp.send( "" );
	xml = objXMLHttp.responseXML;

	if ( document.all ) {
		objNodeList = xml.selectNodes( "//SELECT" );
		document.getElementById("data").innerHTML = objNodeList.item(0).xml;
	}
	else {
		objNodeList = xml.getElementsByTagName("SELECT");
		document.getElementById("data").innerHTML = "";
		document.getElementById("data").appendChild( objNodeList.item(0) );
		document.getElementById("data").innerHTML
		= document.getElementById("data").innerHTML;
	}

}

</SCRIPT>
</HEAD>
<BODY>

<INPUT type=button name="send" value="送信" onClick='GetServerData( )'>
<DIV id="data"></DIV>

</BODY>
</HTML>
  

IE の場合は、そのような状況を想定したプロパティがありますが、Netscape の場合は、
「これでいいのか?」というような方法です。

appendChild した時点ではテキストしか表示されませんが、innerHTML を文字列として取得すると、
きちんと入っているので、再度 innerHTML にセットしなおして適用します。
( これは、おそらく内部データ型の持ち方の違いで発生するものだと思います )











  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ