AJAX Sample( AJAX Class )
07 22, 2007 10:49
XMLHttpRequest Class
서버와의 통신을 수행하는 XMLHttpRequest 객체를 생성하기 위해서는 ajax.js 파일을 포함하고 사용한다. 사용법은 다음과 같다.
<script language="javascript" type="text/javascript" src=“ajax.js"></script>
- ajax.js
| var AJAX = { |
| XmlHttp: null, |
| create: function () |
| { |
| if ( window.XMLHttpRequest )// branch for native XMLHttpRequest object |
| { |
| try |
| { |
| AJAX.XmlHttp = new XMLHttpRequest(); |
| // 일부의 모질라 버전을은 readyState property, onreadystate event |
| // 를 지원하지 않으므로. - from xmlextrs |
| if ( this.XmlHttp.readyState == null ) |
| { |
| this.XmlHttp.readyState = 1; |
| this.XmlHttp.addEventListener("load", function () { |
| this.XmlHttp.readyState = 4; |
| if ( typeof this.XmlHttp.onreadystatechange == "function" ) |
| tmpXmlHtp.onreadystatechange(); |
| }, false); |
| } |
| } |
| catch(e) |
| { |
| AJAX.XmlHttp = false; |
| alert("Your browser does not support XmlHttp objects"); |
| } |
| } |
| else if ( window.ActiveXObject )// branch for IE/Windows ActiveX version |
| { |
| try |
| { |
| AJAX.XmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); |
| } |
| catch(e) |
| { |
| try |
| { |
| AJAX.XmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); |
| } |
| catch(e) |
| { |
| AJAX.XmlHttp = false; |
| alert("Your browser does not support XmlHttp objects"); |
| } |
| } |
| } |
| } |
| } |
| AJAX.openXML = function ( method, url, async, uname, pswd ) |
| { |
| if ( AJAX.XmlHttp != null ) |
| { |
| if ( uname == undefined ) |
| { |
| AJAX.XmlHttp.open( method, url, async ); |
| } |
| else |
| { |
| AJAX.XmlHttp.open( method, url, async, uname, pswd ); |
| } |
| AJAX.XmlHttp.onreadystatechange = function () |
| { |
| if ( AJAX.XmlHttp.readyState == 4 ) |
| { |
| if ( AJAX.XmlHttp.status == 200 ) |
| { // 200 은 HTTP에서 성공 i.e) 404 : not found |
| AJAX.statusSuccessHandler( AJAX.XmlHttp.responseXML.xml ); |
| } |
| else |
| { |
| AJAX.statusErrorHandler(); |
| alert('Error while loading!'); |
| } |
| } |
| } |
| } |
| else |
| { |
| alert("need to create xmlhttp object"); |
| } |
| } |
| AJAX.openText = function ( method, url, async, uname, pswd ) |
| { |
| if ( AJAX.XmlHttp != null ) |
| { |
| if ( uname == undefined ) |
| { |
| AJAX.XmlHttp.open( method, url, async ); |
| } |
| else |
| { |
| AJAX.XmlHttp.open( method, url, async, uname, pswd ); |
| } |
| AJAX.XmlHttp.onreadystatechange = function () |
| { |
| if ( AJAX.XmlHttp.readyState == 4 ) |
| { |
| if ( AJAX.XmlHttp.status == 200 ) |
| { // 200 은 HTTP에서 성공 i.e) 404 : not found |
| AJAX.statusSuccessHandler( AJAX.XmlHttp.responseText ); |
| } |
| else |
| { |
| AJAX.statusErrorHandler(); |
| alert('Error while loading!'); |
| } |
| } |
| } |
| } |
| else |
| { |
| alert("need to create xmlhttp object"); |
| } |
| } |
| AJAX.send = function ( content ) |
| { |
| if ( content == undefined ) |
| AJAX.XmlHttp.send( null ); |
| else |
| AJAX.XmlHttp.send( content ); |
| } |
| AJAX.setOnReadyStateChange = function ( funcname ) |
| { |
| if ( AJAX.XmlHttp ) |
| { |
| AJAX.XmlHttp.onreadystatechange = funcname; |
| } |
| else |
| { |
| alert ("need to create xmlhttp object"); |
| } |
| } |
| // status 200 일 때 처리 함수 |
| AJAX.statusSuccessHandler = function ( data ) |
| { |
| //alert(data); |
| } |
| // status 200 일 때 기본 처리 함수 |
| // setStatusSuccessHandler() 로 대체 가능 |
| AJAX.statusErrorHandler = function ( status ) |
| { |
| AJAX.rtnText = AJAX.XmlHttp.responseText; |
| } |
| AJAX.setStatusSuccessHandler = function ( funcname ) |
| { |
| AJAX.statusSuccessHandler = funcname; |
| } |
| AJAX.setStatusErrorHandler = function ( funcname ) |
| { |
| AJAX.statusErrorHandler = funcname; |
| } |
| AJAX.setRequestHeader = function ( label, value ) |
| { |
| AJAX.XmlHttp.setRequestHeader( label, value ); |
| } |
| AJAX.formData2QueryString = function ( docForm ) |
| { |
| var submitContent = ''; |
| var formElem; |
| var lastElemName = ''; |
| for( i = 0; i < docForm.elements.length; i++ ) |
| { |
| formElem = docForm.elements[i]; |
| switch( formElem.type ) |
| { |
| // Text fields, hidden form elements |
| case 'text': |
| case 'hidden': |
| case 'password': |
| case 'textarea': |
| case 'select-one': |
| submitContent += formElem.name + '=' + escape(formElem.value) + '&' |
| break; |
| // Radio buttons |
| case 'radio': |
| if ( formElem.checked ) |
| { |
| submitContent += formElem.name + '=' + escape(formElem.value) + '&' |
| } |
| break; |
| // Checkboxes |
| case 'checkbox': |
| if ( formElem.checked ) |
| { |
| // Continuing multiple, same-name checkboxes |
| if ( formElem.name == lastElemName ) |
| { |
| // Strip of end ampersand if there is one |
| if ( submitContent.lastIndexOf('&') == submitContent.length - 1 ) |
| { |
| submitContent = submitContent.substr(0, submitContent.length - 1); |
| } |
| // Append value as comma-delimited string |
| submitContent += ',' + escape(formElem.value); |
| } |
| else |
| { |
| submitContent += formElem.name + '=' + escape(formElem.value); |
| } |
| submitContent += '&'; |
| lastElemName = formElem.name; |
| } |
| break; |
| } |
| } |
| // Remove trailing separator |
| submitContent = submitContent.substr(0, submitContent.length - 1); |
| return submitContent; |
| } |
| // 사용법 |
| // AJAX.create(); |
| // AJAX.openText('GET','jsontest.php', true); |
| // AJAX.setStatusSuccessHandler(proc); |
| // AJAX.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;'); |
| // AJAX.send("test=테스트"); |
| // |
| // function proc(abc) |
| // { |
| //document.getElementById('test').innerHTML = abc; |
| // } |
Trackback Address:http://limcom.co.kr/blog/trackback/91