?
/**
?* 工具对象
?*/
comet.utils = {
? ? ? ? /**
? ? ? ? ?* 获取随机数参数,形如:&randomNum=18787890001
? ? ? ? ?*/
? ? ? ? _getRandomNumParam : function(){
? ? ? ? ? ? ? ? var date = new Date();
? ? ? ? ? ? ? ? var retStr = "&randomNum=" + date.getTime();
? ? ? ? ? ? ? ? return retStr;
? ? ? ? },
? ? ? ? /**
? ? ? ? ?* 获取项目根路径,返回值形如:http://localhost:8080/sys/
? ? ? ? ?*/
? ? ? ? _getRootPath : function (){
? ? ? ? ? ? ? ? //获取当前网址,如:http://localhost:8080/sys/testPushlet.jsp
? ? ? ? ? ? ? ? var curHref = location.href;
? ? ? ? ? ? ? ? //获取主机地址之后的目录,如:/sys/testPushlet.jsp
? ? ? ? ? ? ? ? var pathName = location.pathname;
? ? ? ? ? ? ? ? //获取当前主机地址,如:http://localhost:8080
? ? ? ? ? ? ? ? var host = curHref.substring(0,curHref.indexOf(pathName));
? ? ? ? ? ? ? ? //获取当前项目名称,如:/sys
? ? ? ? ? ? ? ? var projectName = pathName.substring(0,pathName.indexOf("/",1));
? ? ? ? ? ? ? ? return(host + projectName + ?"/");
? ? ? ? },
? ? ? ? /**
? ? ? ? ?* 创建兼容firefox、ie5以上版本的xmlHttpRequest对象
? ? ? ? ?*/
? ? ? ? _getXMLHttpRequest : function(){?
? ? ? ? ? ? ? ? var http_request;
? ? ? ? ? ? ? ? if(comet.browserType=="firefox"){ // firefox
? ? ? ? ? ? ? ? ? ? ? ? http_request=new XMLHttpRequest();?
? ? ? ? ? ? ? ? }else if(comet.browserType=="ie"){ // ie系列
? ? ? ? ? ? ? ? ? ? ? ? try{?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? http_request=new ActiveXObject("Msxml2.XMLHTTP");?
? ? ? ? ? ? ? ? ? ? ? ? }catch(e){ // IE5.x
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? http_request=new ActiveXObject("Microsoft.XMLHTTP");?
? ? ? ? ? ? ? ? ? ? ? ? }?
? ? ? ? ? ? ? ? }?
? ? ? ? ? ? ? ? return http_request;
? ? ? ? },
? ? ? ? /**
? ? ? ? ?* 封装ajax请求方法(类似jquery中$.ajax)
? ? ? ? ?*/
? ? ? ? _ajax : function(args){
? ? ? ? ? ? ? ? var url = null;
? ? ? ? ? ? ? ? var async = true;
? ? ? ? ? ? ? ? var type = "GET";
? ? ? ? ? ? ? ? var postData = null;
? ? ? ? ? ? ? ? var successFun = null;
? ? ? ? ? ? ? ? var errorFun = null;
? ? ? ? ? ? ? ? var timeout = null;
? ? ? ? ? ? ? ? var timer = null;
? ? ? ? ? ? ? ? if(args[url]){
? ? ? ? ? ? ? ? ? ? ? ? //避免IE下使用缓存,不刷新问题
? ? ? ? ? ? ? ? ? ? ? ? url = args[url] + comet.utils._getRandomNumParam(); ?
? ? ? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? ? ? ? ? alert("url could not be null");
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? if(args[async] == false){async = false;}
? ? ? ? ? ? ? ? if(args[type] == "POST"){type = "POST";}
? ? ? ? ? ? ? ? if(args[postData]){postData = args[postData];}
? ? ? ? ? ? ? ? if(args[success]){successFun = args[success];}
? ? ? ? ? ? ? ? if(args[error]){error = args[error];}
? ? ? ? ? ? ? ? if(args[timeout]){timeout = args[timeout];}
? ? ? ? ? ? ? ? var xmlhttp = comet.utils._getXMLHttpRequest();
? ? ? ? ? ? ? ? if (!xmlhttp || xmlhttp == null) {
? ? ? ? ? ? ? ? ? ? ? ? alert('No browser XMLHttpRequest (AJAX) support');
? ? ? ? ? ? ? ? ? ? ? ? return;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? xmlhttp.onreadystatechange = function() {
? ? ? ? ? ? ? ? ? ? ? ? if (xmlhttp.readyState == 4) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (xmlhttp.status == 200) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(successFun != null){successFun(xmlhttp);}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(errorFun != null){errorFun(xmlhttp);}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? alert("XMLHttpResponse return error ,the status is" ? ? ? ?+ xmlhttp.status);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(timer){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? clearTimeout(timer);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? timer = null;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? };
? ? ? ? ? ? ? ? xmlhttp.open(type, url, async);
? ? ? ? ? ? ? ? xmlhttp.setRequestHeader("content-type","application/x-www-form-urlencoded; charset=utf-8");
? ? ? ? ? ? ? ? xmlhttp.send(null);
? ? ? ? ? ? ? ? if(args[timeout] != null){
? ? ? ? ? ? ? ? ? ? ? ? timeout = args[timeout];
? ? ? ? ? ? ? ? ? ? ? ? timer = setTimeout(function(){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? alert("超时了");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? xmlhttp.abort();
? ? ? ? ? ? ? ? ? ? ? ? }, timeout);
? ? ? ? ? ? ? ? }
? ? ? ? },
? ? ? ? /**
? ? ? ? ?* 把xml的txt格式片段解析成xml dom对象
? ? ? ? ?*/
? ? ? ? _txt2xml : function (dataset){
? ? ? ? ? ? ? ? if (comet.browserType=="ie"){//IE浏览器 ??
? ? ? ? ? ? ? ? ? ? ? ? var xmlDom=new ActiveXObject("Microsoft.XMLDOM");
? ? ? ? ? ? ? ? ? ? ? ? xmlDom.async="false";
? ? ? ? ? ? ? ? ? ? ? ? xmlDom.loadXML(dataset);
? ? ? ? ? ? ? ? ? ? ? ? return xmlDom;
? ? ? ? ? ? ? ? }else if(comet.browserType=="firefox"){//firefox浏览器"
? ? ? ? ? ? ? ? ? ? ? ? var parser=new DOMParser();
? ? ? ? ? ? ? ? ? ? ? ? xmlDom = parser.parseFromString(dataset,"text/xml");
? ? ? ? ? ? ? ? ? ? ? ? return xmlDom;
? ? ? ? ? ? ? ? }
? ? ? ? },
? ? ? ? /**
? ? ? ? ?* 把xml解析成js对象,深度解析
? ? ? ? ?* 参数示例:comet.utils._xml2vo({},xmlData);pvo不能为null,可以为{}
? ? ? ? ?*/
? ? ? ? _xml2vo : function (pvo,dataset){
? ? ? ? ? ? ? ? if(dataset==null||dataset.childNodes==null){
? ? ? ? ? ? ? ? ? ? ? ? return pvo;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? if(dataset.nodeType == 9){
? ? ? ? ? ? ? ? ? ? ? ? dataset = dataset.documentElement;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? var cnt = dataset.childNodes.length;
? ? ? ? ? ? ? ? for(var i=0; i<cnt; i++){
? ? ? ? ? ? ? ? ? ? ? ? var child = dataset.childNodes[i];
? ? ? ? ? ? ? ? ? ? ? ? if (child.firstChild.nodeType == 1) {
// ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?暂时用浅度解析,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pvo[child.nodeName] = child;//暂时用这个
// ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?pvo[child.nodeName] = {};
// ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?comet.utils._xml2vo(pvo[child.nodeName],child);
? ? ? ? ? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pvo[child.nodeName] = child.firstChild.nodeValue;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? return pvo; ? ? ? ?
? ? ? ? }
};
{"pstate":"","pdata":{"pcprice":"21,000","pcname":"thinkpad-T400"},"pid":"","psubject":"thickpad","ptime":"","ptype":"join"}
<?xml version="1.0" encoding="UTF-8"?><Ack><ptype>join</ptype><psubject>thickpad</psubject><pdata class="com.abchina.console.util.pushlet.test.PCReturnData"><pcname>thinkpad-T400</pcname><pcprice>21,000</pcprice></pdata></Ack>
xml递归解析成js对象,以后测试。
<html>
? ? ? ? <head>
? ? ? ? ? ? ? ? <script type="text/javascript">
? ? ? ? ? ? ? ? ? ? ? ? function b(){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //var str = '{"plist":[{"price":888},{"price":999}]}';
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //var jt = eval("("+str+")");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //alert(jt);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //var xml = ? ? ? ? '<?xml version="1.0" encoding="UTF-8"?><Ack><ptype>cautopush</ptype><ptime>100000</ptime><pid>1311728138781</pid><pstate>OK</pstate><psubject>auto_subject02</psubject><pdata class="liubo.web.pushlet.test.PCReturnData"><pcname>thinkpad-T25</pcname><plist><pcprice>16,000</pcprice><pcprice>25,000</pcprice></plist></pdata></Ack>';
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? var xml = '<?xml version="1.0" encoding="UTF-8"?><plist><pcprice>16,000</pcprice><pcprice>25,000</pcprice></plist>';
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? var xmldom = _txt2xml(xml);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? var t = _xml2vo({},xmldom);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? alert(t);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? function ?_txt2xml (dataset){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? var ua = navigator.userAgent.toLowerCase();
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (ua.indexOf("msie") > -1){//IE浏览器 ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? var xmlDom=new ActiveXObject("Microsoft.XMLDOM");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? xmlDom.async="false";
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? xmlDom.loadXML(dataset);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? return xmlDom;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }else if(ua.indexOf("firefox") > -1){//firefox浏览器"
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? var parser=new DOMParser();
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? xmlDom = parser.parseFromString(dataset,"text/xml");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? return xmlDom;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? function ?_xml2vo(pvo,dataset){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(dataset==null||dataset.childNodes==null){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? return pvo;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(dataset.nodeType == 9){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dataset = dataset.documentElement;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pvo[dataset.nodeName]={};
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? var cnt = dataset.childNodes.length;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? for(var i=0; i<cnt; i++){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? var child = dataset.childNodes[i];
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (child.firstChild.nodeType == 1) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(pvo[child.nodeName]){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pvo = new Array(pvo[child.nodeName]);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? delete(pvo[child.nodeName]);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? var tmp = {};
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? tmp[child.nodeName] = {};
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pvo.push(tmp);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? _xml2vo(tmp,child);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pvo[child.nodeName] = {};
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? _xml2vo(pvo[child.nodeName],child);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(pvo[child.nodeName]){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pvo = new Array(pvo[child.nodeName]);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? delete(pvo[child.nodeName]);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? var tmp = {};
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? tmp[child.nodeName] = child.firstChild.nodeValue;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pvo.push(tmp);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pvo[child.nodeName] = child.firstChild.nodeValue;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? return pvo; ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? </script>