YesYo.com MintState Forums
뒤로    YesYo.com MintState BBS > Tech > Ajax & Issue
검색
멤버이름    오토
비밀번호 
 

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

페이지 정보

작성자 MintState 댓글 0건 조회 15,568회 작성일 09-07-07 13:41

본문

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 */
첨부 파일
파일 종류: js ajaxControl.js (3.8K, 60 views)

댓글목록

등록된 댓글이 없습니다.

Total 32건 1 페이지
Ajax & Issue 목록
번호 제목 글쓴이 조회 날짜
32 MintState 8597 02-02
31 MintState 9226 05-30
30 MintState 10901 03-04
29 MintState 12133 03-21
28 MintState 11937 11-25
27 MintState 16629 09-19
26 MintState 13263 06-23
25 MintState 10686 06-01
24 MintState 15358 06-01
23 MintState 11424 06-01
22 MintState 13071 04-18
21 MintState 11631 02-21
20 MintState 15677 07-13
19 MintState 15497 07-02
18 MintState 12475 01-19
17 MintState 17228 01-19
16 MintState 15659 08-27
15 MintState 15107 08-27
열람중 MintState 15569 07-07
13
Google Maps API 댓글+ 1
MintState 21166 03-18
게시물 검색
모바일 버전으로 보기
CopyRight ©2004 - 2024, YesYo.com MintState. ™