当前位置: 代码迷 >> JavaScript >> javascript-例证
  详细解决方案

javascript-例证

热度:417   发布时间:2012-11-26 11:48:50.0
javascript-例子

?

/**

?* 工具对象

?*/

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>

  相关解决方案