`

javascript-例子

    博客分类:
  • W3C
 
阅读更多

 

/**

 * 工具对象

 */

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>

分享到:
评论

相关推荐

    javascript-xpath-latest.js

    javascript-xpath, 虽然比firefox还是慢,但也快多了,上面的例子只需要不 到1秒。换法很简单,如下: selenium = new DefaultSelenium(location, port, browser, targetPath); selenium.start(); selenium....

    JavaScript基础知识例子

    这个压缩包文件“JavaScript基础知识例子.zip”包含了多个HTML文档,每个文档详细介绍了JavaScript的基础知识,特别是关于数据类型、Object类型以及内置对象的概念。 首先,让我们深入探讨JavaScript的数据类型。在...

    JavaScript应用实例-例子_模块使用.js

    JavaScript应用实例-例子_模块使用.js

    JavaScript应用实例-例子_多线程使用.js

    JavaScript应用实例-例子_多线程使用.js

    javaScript-javascript-初级到高级-笔记PDF

    113.javaScript:它和标签语言都属于描述性的语言,用于和html结合从而强化网页数据的展现,虽然语法和结构上和java类似,但实际上它是和java完全不同的一门语言,它只是函数式的语言,其实从字面意思...直接看例子程序:

    JavaScript - The Definitive Guide 4th edtion

    《JavaScript - The Definitive Guide 4th Edition》是一本权威的JavaScript编程...通过阅读和实践书中的例子,你可以深入了解JavaScript的精髓,提升自己的编程技能,从而更好地利用JavaScript构建功能丰富的Web应用。

    最新300个JavaScript小例子

    JavaScript例子通常涵盖以下关键知识点: 1. **基础语法**:这是JavaScript学习的起点,包括变量声明(var、let、const),数据类型(字符串、数字、布尔、对象、数组、null、undefined),以及运算符(算术、比较...

    canvas-js-动画-例子

    本示例“canvas-js-动画-例子”聚焦于使用JavaScript在Canvas上创建动态的、引人入胜的动画。这个压缩包包含了一个名为“0.html”的文件,我们将会深入探讨这个例子中的关键知识点。 首先,Canvas是HTML5的一个组成...

    javascript-yingyong.rar_javascript

    9. **错误显示.html.bak**:这可能是一个关于错误处理的例子,JavaScript提供了try...catch结构来捕获和处理运行时错误,同时可以使用console.log()或alert()来显示错误信息。 通过研究这些示例,学习者可以加深对...

    FlexPaperExample1.zip---例子程序

    - **libs**:这个目录通常包含FlexPaper的JavaScript库和其他必要的依赖库,如jQuery等,是运行示例程序的基础。 - **src**:源代码文件,可能包括HTML、CSS和JavaScript文件,展示了如何在实际项目中引入和初始化...

    javascript 注册小例子

    总的来说,"javascript注册小例子"是一个学习和实践JavaScript前端验证的实例,涵盖了基本的表单处理、数据验证、正则表达式应用以及与服务器的异步交互。通过理解和分析这个例子,开发者可以更好地掌握JavaScript在...

    Javascript - The Definitive Guide 6th.pdf

    例如,在下面的例子中,即使没有显式添加分号,代码也能正常运行: ```javascript let x = 1 let y = 2 console.log(x + y); // 输出 3 ``` 然而,依赖于ASI可能会导致难以调试的问题,因此推荐始终显式地添加分号...

    经典的JavaScript小例子

    这个"经典的JavaScript小例子"集合提供了一系列实用的代码片段,旨在帮助开发者理解和应用JavaScript的基本概念,同时激发创新思维,为网站增添互动性和趣味性。 首先,我们要明白JavaScript的主要功能:它可以在...

    javascript基础例子(很好的~)

    这个“javascript基础例子”压缩包显然包含了多个JavaScript基础示例,可以帮助初学者理解和掌握JavaScript的核心概念。 首先,让我们从基础开始。JavaScript语法与C++和Java有相似之处,它是一种解释型语言,意味...

    JavaScript实用例子

    这个压缩包文件"JavaScript实用例子"显然包含了一系列有助于初学者理解和掌握JavaScript编程技巧的实际示例。现在,我们将深入探讨JavaScript的一些关键知识点。 1. 变量与数据类型: JavaScript支持动态数据类型...

    http-javascript-xmpp-demo-实例

    这是使用javascript开发的xmpp的例子,只实现了连接xmpp服务器的操作, 包含主要文件如下: flXHR.js、strophe.flxhr.js、strophe.js、jquery-1.8.3.js、jquery-ui-1.9.2.custom.min.js、flensed.js、checkplayer.js...

    JavaScript应用实例-spinner例子.js

    JavaScript应用实例-spinner例子.js

    【JavaScript-Vue】-Vue知识体系详解

    在这个例子中,`demo.js`文件只包含JavaScript代码,不含`&lt;script&gt;`标签。 学习JavaScript的基础语法,包括: - **区分大小写**:变量名、函数名等都是区分大小写的。 - **分号**:虽然分号是可选的,但为了提高...

    javascript-collection-paraphernalia:Javascript收集实用程序,例如each,filter和find

    2.例子 需要javascript-collection-paraphernalia var collection = require ( 'javascript-collection-paraphernalia' ) 定义要迭代的对象 var data = { one : { id : 1 , name : "ONE" } , two : { id : 2 , ...

Global site tag (gtag.js) - Google Analytics