mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-06 10:11:38 +09:00
136 lines
3.9 KiB
JavaScript
136 lines
3.9 KiB
JavaScript
/**
|
|
* @file : common/js/xml_handler.js
|
|
* @author : zero <zero@nzeo.com>
|
|
* @desc : ajax 사용을 위한 기본 js
|
|
**/
|
|
|
|
// xml handler을 이용하는 user function
|
|
function exec_xml(method_name, act, params, callback_func, response_tags, callback_func_arg) {
|
|
var oXml = new xml_handler();
|
|
oXml.reset();
|
|
oXml.setMethod(method_name);
|
|
oXml.addParam('act', act);
|
|
for(var key in params) {
|
|
var val = params[key];
|
|
oXml.addParam(key, val);
|
|
}
|
|
|
|
var waiting_obj = document.getElementById('waitingforserverresponse');
|
|
waiting_obj.style.visibility = 'visible';
|
|
oXml.request(xml_response_filter, oXml, callback_func, response_tags, callback_func_arg);
|
|
}
|
|
|
|
// 결과 처리 후 callback_func에 넘겨줌
|
|
function xml_response_filter(oXml, callback_func, response_tags, callback_func_arg) {
|
|
var xmlDoc = oXml.getResponseXml();
|
|
if(!xmlDoc) return;
|
|
|
|
var waiting_obj = document.getElementById('waitingforserverresponse');
|
|
waiting_obj.style.visibility = 'hidden';
|
|
var ret_obj = oXml.toZMsgObject(xmlDoc, response_tags);
|
|
if(ret_obj['error']!=0) {
|
|
alert(ret_obj['message']);
|
|
return;
|
|
}
|
|
|
|
callback_func(ret_obj, response_tags, callback_func_arg);
|
|
}
|
|
|
|
// xml handler
|
|
function xml_handler() {
|
|
this.obj_xmlHttp = null;
|
|
this.method_name = null;
|
|
if(location.href.indexOf('admin.php')>0) this.xml_path = "./admin.php";
|
|
else this.xml_path = "./index.php";
|
|
|
|
this.params = new Array();
|
|
|
|
this.reset = xml_handlerReset;
|
|
this.getXmlHttp = zGetXmlHttp;
|
|
this.request = xml_handlerRequest;
|
|
this.setPath = xml_handlerSetPath;
|
|
this.setMethod = xml_handlerSetMethod;
|
|
this.addParam = xml_handlerAddParam;
|
|
this.getResponseXml = xml_handlerGetResponseXML;
|
|
this.toZMsgObject = xml_handlerToZMsgObject;
|
|
|
|
this.obj_xmlHttp = this.getXmlHttp();
|
|
}
|
|
|
|
function zGetXmlHttp() {
|
|
if (window.XMLHttpRequest) return new XMLHttpRequest();
|
|
else if (window.ActiveXObject) {
|
|
try {
|
|
return new ActiveXObject("Msxml2.XMLHTTP");
|
|
} catch (e) {
|
|
return new ActiveXObject("Microsoft.XMLHTTP");
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
function xml_handlerRequest(callBackFunc, xmlObj, callBackFunc2, response_tags, callback_func_arg) {
|
|
|
|
var rd = "";
|
|
rd += "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n"
|
|
+ "<methodCall>\n"
|
|
+ "<methodName>"+this.method_name+"</methodName>\n"
|
|
+ "<params>\n"
|
|
|
|
for (var key in this.params) {
|
|
var val = this.params[key];
|
|
rd += "<"+key+"><![CDATA["+val+"]]></"+key+">\n";
|
|
}
|
|
|
|
rd += "</params>\n"
|
|
+ "</methodCall>\n";
|
|
if(this.obj_xmlHttp.readyState!=0) {
|
|
this.obj_xmlHttp.abort();
|
|
this.obj_xmlHttp = this.getXmlHttp();
|
|
}
|
|
this.obj_xmlHttp.onreadystatechange = function () {callBackFunc(xmlObj, callBackFunc2, response_tags, callback_func_arg)};
|
|
this.obj_xmlHttp.open('POST', this.xml_path, true);
|
|
this.obj_xmlHttp.send(rd);
|
|
}
|
|
|
|
function xml_handlerSetPath(path) {
|
|
this.xml_path = "./"+path;
|
|
}
|
|
|
|
function xml_handlerSetMethod(method_name) {
|
|
this.method_name = method_name;
|
|
}
|
|
|
|
function xml_handlerReset() {
|
|
this.obj_xmlHttp = this.getXmlHttp();
|
|
this.params = new Array();
|
|
}
|
|
|
|
function xml_handlerAddParam(key, val) {
|
|
this.params[key] = val;
|
|
}
|
|
|
|
function xml_handlerGetResponseXML() {
|
|
if(this.obj_xmlHttp && this.obj_xmlHttp.readyState == 4 && isDef(this.obj_xmlHttp.responseXML)) {
|
|
var xmlDoc = this.obj_xmlHttp.responseXML;
|
|
this.reset();
|
|
return xmlDoc;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
function xml_handlerToZMsgObject(xmlDoc, tags) {
|
|
if(!xmlDoc) return null;
|
|
if(!tags) {
|
|
tags = new Array('error','message');
|
|
}
|
|
var obj_ret = new Array();
|
|
for(var i=0; i<tags.length; i++) {
|
|
try {
|
|
obj_ret[tags[i]] = xmlDoc.getElementsByTagName(tags[i])[0].firstChild.nodeValue;
|
|
} catch(e) {
|
|
obj_ret[tags[i]] = '';
|
|
}
|
|
}
|
|
return obj_ret;
|
|
}
|