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


  目的データの取得



  
function GetServerData( ) {

	var result,xml,obj,objList,i,length;

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

	result += xml.nodeName + "<br>";

	// combodata
	obj = xml.childNodes.item(1);
	result += obj.nodeName + "<br>";

	// combodata の 中
	objList = obj.childNodes;
	length = objList.length;
	result += " 子ノードの数:" + length + "<br>";
		
	for( i = 0; i < length; i++ ) {
		obj = objList.item(i)
		result += " " + i + ":" + obj.nodeName + "<br>";
	}

	document.getElementById("data").innerHTML = result;

}
  

IE での結果
#document
combodata
 子ノードの数:2
 0:list
 1:list

Netscape での結果
#document
combodata
 子ノードの数:5
 0:#text
 1:list
 2:#text
 3:list
 4:#text

Netscape では必ず空ノードが入ります。

と言っても、IE では有効なデータが無い為に省略されているだけで、
本来タグの前後にはデータを挿入する事ができます。

以下のコードで目的のデータを取得しています ( alert の部分 )

  
function GetServerData( ) {

	var result,xml,obj,objList,i,length,j,work;

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

	result += xml.nodeName + "<br>";

	// combodata
	obj = xml.childNodes.item(1);
	result += obj.nodeName + "<br>";

	// combodata の 中
	objList = obj.childNodes;
	length = objList.length;
	result += " 子ノードの数:" + length + "<br>";
		
	for( i = 0; i < length; i++ ) {
		obj = objList.item(i)
		result += " " + i + ":" + obj.nodeName + "<br>";
		for( j = 0; j < obj.childNodes.length; j++ ) {
			result += "  " + j + ":"
			+ obj.childNodes.item(j).nodeName + "<br>";
			work = obj.childNodes.item(j).nodeName;
			if ( "#cdata-section" == work ) {
				alert(obj.childNodes.item(j).nodeValue);
			}
		}
		
	}

	document.getElementById("data").innerHTML = result;

}
  

IE での結果
#document
combodata
 子ノードの数:2
 0:list
  0:#cdata-section
 1:list
  0:#cdata-section

Netscape での結果
#document
combodata
 子ノードの数:5
 0:#text
 1:list
  0:#text
  1:#cdata-section
  2:#text
 2:#text
 3:list
  0:#text
  1:#cdata-section
  2:#text
 4:#text

list タグより取得する場合は以下のようになります

  
function GetServerData( ) {

	var result,xml,obj,objList,i,length,j,work;

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

	// 目的の親ノード
	objList = xml.getElementsByTagName("list");
	length = objList.length;
	result += "ノードの数:" + length + "<br>";

	for( i = 0; i < length; i++ ) {
		obj = objList.item(i)
		result += " " + i + ":" + obj.nodeName + "<br>";
		for( j = 0; j < obj.childNodes.length; j++ ) {
			result += "  " + j + ":"
			+ obj.childNodes.item(j).nodeName + "<br>";
			work = obj.childNodes.item(j).nodeName;
			if ( "#cdata-section" == work ) {
				alert(obj.childNodes.item(j).nodeValue);
			}
		}
		
	}

	document.getElementById("data").innerHTML = result;

}
  










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





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

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ