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

 
작성일 : 09-07-07 13:41
ajax의 xml을 javascript 객체형식으로 자동 변환
 글쓴이 : MintState
조회 : 8,451  
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, 1 views)
Rated 0/5 (0%) (0 Votes)

(\__/)
(='.'=)
(")_(")~
Search Infomation by MintState
MintState

 
 

Total 32
번호 제   목 글쓴이 날짜 조회
32 Swiper - Most Modern Mobile Touch Slider MintState 02-02 1588
31 [jquery] 스와프 가능한 이미지 배너 - OWL Carousel MintState 05-30 2950
30 구글맵 api 편리하기 사용가능하게 해주는 gmaps.js MintState 03-04 4401
29 jQuery - FullCalendar MintState 03-21 6019
28 jquery - select box MintState 11-25 5981
27 Wowza Streaming Server MintState 09-19 7767
26 jQuery Datepicker MintState 06-23 6902
25 Using the Twitter Search API MintState 06-01 4813
24 Twitter Search using the Twitter API and PHP MintState 06-01 5501
23 PHP Twitter Search API MintState 06-01 5363
22 모바일(iOS 용) 터치 관련 jQuery 플러그인 MintState 04-18 6439
21 GEO <-> KATEC 변환 MintState 02-21 5625
20 Twitter API 링크 MintState 07-13 7834
19 jQuery Simple WYSIWYG Editor MintState 07-02 8354
18 Prototype.js 의 Object 객체의 메소드 MintState 01-19 6614
17 prototype.js 를 이용한 JSON사용 예제 MintState 01-19 10541
16 php 내장함수을 이용한 XML Parser MintState 08-27 8544
15 XML 파싱(xml2array) MintState 08-27 8220
14 ajax의 xml을 javascript 객체형식으로 자동 변환 MintState 07-07 8452
13 Google Maps API (1) MintState 03-18 14209
 1  2  
모바일 버전으로 보기
CopyRight ©2004 - 2017, YesYo.com MintState. ™