사이트 내 전체검색
PHP
[ajax] ajax의 xml을 javascript 객체형식으로 자동 변환
로빈아빠
https://cmd.kr/php/574 URL이 복사되었습니다.

본문

ajax의 xml을 javascript 객체형식으로 자동 변환

/** 
* Author	: MC 심새 (ganer9r@naver.com) 
* Make Date : 2006-09-22
* comment	: ajax의 xml을 javascript 객체형식으로 자동 변환
**/

/* Ajax 사용을 위한 기본 콤포넌트 Start */
function AjaxDataControl(){
	this.xmlHttp			= null;

	this.getHttpRequest		= function(URL, object){
		var xmlHttp		= this.xmlHttp;
		var xmlData		= null;
		// FF일 경우 window.XMLHttpRequest 객체가 존재한다.
		if(!xmlHttp){
			if(window.XMLHttpRequest) { 
				xmlHttp	= new XMLHttpRequest();
			} else { 
				xmlHttp	= new ActiveXObject("Microsoft.XMLHTTP"); 
			} 
			this.xmlHttp	= xmlHttp;
		}

		xmlHttp.open('GET', URL, true); 
		xmlHttp.onreadystatechange = function() { 
			// readyState 가 4 고 status 가 200 일 경우 올바르게 가져옴 
			if(xmlHttp.readyState==4 && xmlHttp.status == 200 && xmlHttp.statusText=='OK') {
				var xmlData		= xmlHttp.responseXML;
				object.setXmlData(xmlData);

			} 
		} 

		xmlHttp.send('');

	}

	this.getXmlRootNode		= function(nodes, rootName){
		var rootNode	= nodes.getElementsByTagName(rootName);

		return rootNode;
	}
}
/* Ajax 사용을 위한 기본 콤포넌트 End */




/* Ajax에서 리턴받은 XML NODE를 JAVASCRIPT OBJECT 형식으로 변환 Start */
function AjaxObject(){
	this.ac				= null;
	this.xmlData		= null;
	this.rootName		= null;
	this.functionName	= null;
	this.arguments		= new Array();

	this.inArray			= function(array, value){
		var result	= false;

		for(var i=0; i < array.length; i++){
			if(array[i] == value){
				result	= true;
				break;
			}
		}

		return result;
	}


	this.getHttpRequest		= function(Url, functionName){
		if(this.ac == null){
			this.ac			= new AjaxDataControl();
		}
		this.functionName	= functionName;

		for(var i=2; i <arguments.length; i++){
			this.arguments.push(arguments[i]);
		}

		this.ac.getHttpRequest(Url, this);
	}




	this.setMakeObject		= function(nodeData){
		var resultObject	= new Object;
		resultObject.length	= 0;

		if(nodeData.hasChildNodes() ){
			var nodeChilds		= nodeData.childNodes;
			var nodeNameList	= new Array();
			var isNodeChilds	= false;

			for(var i = 0; i<nodeChilds.length;i++){

				if(nodeChilds[i].nodeType == '1'){

					var returnObj	= this.setMakeObject(nodeChilds[i] );

					if( typeof(returnObj) == "string"){
						resultObject[ nodeChilds[i].nodeName ]	= this.setMakeObject(nodeChilds[i] );
						resultObject.length	+= 1;
					}else{

						if(resultObject[ nodeChilds[i].nodeName ]){
							resultObject[ nodeChilds[i].nodeName ].push( returnObj );
						}else{
							resultObject[ nodeChilds[i].nodeName ]	= new Array();
							resultObject[ nodeChilds[i].nodeName ].push( returnObj );

							resultObject.length	+= 1;
						}
					}
					isNodeChilds	= true;

				}
			}

			if(!isNodeChilds){
				resultObject	= nodeChilds[0].nodeValue;
			}else{

			}
		}

		return resultObject;
	}


	this.setMakeControl		= function(){
		if(this.xmlData != null){
			var rootNode	= this.ac.getXmlRootNode(this.xmlData, this.rootName);
			var list		= this.setMakeObject(rootNode[0]);
			var	args		= "";

			for(var i=0; i<this.arguments.length; i++){
				args	+= ", this.arguments["+i+"]";
			}

			eval( this.functionName+"(list "+args+")" );
		}
	}

	this.setXmlData			= function(data){
		this.xmlData		= data;
		this.rootName		= data.documentElement.nodeName;

		this.setMakeControl();
	}

}
/* Ajax에서 리턴받은 XML NODE를 JAVASCRIPT OBJECT 형식으로 변환 End */


/* 사용법 Start*/
//	var aObj	= new AjaxObject;         // AjaxList 선언
//	aObj.getHttpRequest("test.xml", "displayBoardList", [인자값]);		//참조Url, 리턴 함수명
//	리턴 함수에는 obj를 받을 인자 필수!!!
//
//	리턴 함수에, 변환된 데이터 이외의 인자를 받고 싶으면 계속 이어서 쓰세요
//	예] aObj.getHttpRequest("test.xml", "displayBoardList", "test", 1, "all", ... );
/* 사용법 End */

댓글목록

등록된 댓글이 없습니다.

PHP
871 (8/18P)

Search

Copyright © Cmd 명령어 13.59.183.186