js库,ajax调用

  1. /**
  2. * Id: edit_base_src.js    2008-08-28 17:11
  3. */
  4. var base={
  5.     Version:"1.0",
  6.     CreateDate:'2008-08-28',
  7.     ReleaseDate:'',
  8.     init:function(){
  9.         //判断浏览器
  10.         var nu=navigator.userAgent;
  11.         this.isOpera=window.opera && opera.buildNumber;
  12.         this.isWebKit = /WebKit/.test(ua);
  13.   this.isOldWebKit = t.isWebKit && !window.getSelection().getRangeAt;
  14.   this.isIE = !t.isWebKit && !t.isOpera && (/MSIE/gi).test(ua) && (/Explorer/gi).test(navigator.appName);
  15.   this.isIE6 = t.isIE && /MSIE [56]/.test(ua);
  16.   this.isGecko = !t.isWebKit && /Gecko/.test(ua);
  17.   this.isGecko3 = t.isGecko && /(Firefox|Minefield)//[3-9]/.test(ua);
  18.   this.isMac = ua.indexOf('Mac') != -1;
  19.     },
  20.     is:function(o,style){//判断类型,o为对象,style为类型如string,object
  21.         var n=typeof(o);//typeof取得对象类型,但数组和null取到的都是object对象typeof一般只能返回如下几个结果:number,boolean,string,function,object,undefined
  22.         
  23.         if(!t)
  24.             return n!='undefined';
  25.         if(t=='array' && (o instanceof Array)) //instanceof同样也是判断对象类型,如果o是array类型,则返因结果为true
  26.             return true;
  27.         
  28.         return n==t;
  29.     },
  30.     isFunction:function(fn){
  31.         return !!fn && typeof fn != "string" && !fn.nodeName && 
  32.    fn.constructor != Array && /function/i.test( fn + "" );
  33.     },
  34.     each:function(obj,fn,args){//动态创建对象,obj为对象,fn为对象方法,args:参数
  35.         var n,l,val;
  36.         if(!obj)
  37.             return 0;
  38.          args =args|| obj;
  39.        if(typeof(obj.length)!='undefined'){
  40.             for(n=0,l=obj.length;n<l;n++){
  41.                 if(fn.call(args,obj[n],n,obj)==false)
  42.                     return 0;
  43.             }
  44.         }else{
  45.             //Hashtables
  46.             for(n in obj){
  47.                 if(obj.hasOwnProperty(n)){
  48.                     if(fn.call(args,obj[n],n,obj)==false)
  49.                         return 0;
  50.                 }
  51.             }
  52.         }
  53.         return 1;
  54.     },
  55.     extend:function(o,e){//扩展方法
  56.         var i,a=arguments;//参数
  57.         
  58.         for(i=1;i<a.length;i++){
  59.             if(a[i]!=null)
  60.                 e=a[i];//取得参数方法
  61.                 this.each(e,function(v,n){
  62.                     if(typeof(v)!='undefined')
  63.                         o[n]=v;
  64.                 });
  65.         }
  66.         return o;
  67.     },
  68.     trim:function(t){//去掉两边空格
  69.         return (t?''+t:'').replace(/^/s*|/s*$/g,'');
  70.     },
  71.     createClass:function(s,p){//s表示需要创建的命名空间,p在此命名空间下的所有方法
  72.         var current=this,sp,name_space,currName,scn,c,de=0;
  73.         
  74.         //类型的格式
  75.         s=/^((static) )?([/w.]+)(:([/w.]+))?/.exec(s);
  76.         //取得类的名称
  77.         currName=s[3].match(/(^|/.)(/w+)$/i)[2];
  78.         //创建一个新的命名空间
  79.         name_space=current.createNS(s[3].replace(//./w+$/,''));
  80.         //判断是否已经存在
  81.         if(name_space[currName])
  82.             return;
  83.         //创建一个静态的类
  84.         if(s[2]=='static'){
  85.             name_space[currName]=p;
  86.             if(this.onCreate)
  87.                 this.onCreate(s[2],s[3],name_space[currName]);
  88.             return;
  89.         }
  90.         //创建一个默认构造函数
  91.         if(!p[currName]){
  92.             p[currName]=function(){};
  93.             de=1;//构造函数创建
  94.         }
  95.         //添加扩展方法
  96.         name_space[currName]=p[currName];
  97.         name_space[currName]=current.extend(name_space[currName].prototype,p);
  98.         
  99.         if(s[5]){//类的继承,有待完成
  100.             sp=current.resolve(s[5]);//分解已有名称空间
  101.             //sp=sp.prototype;
  102.             scn=s[5].match(//.(/w+)$/i)[1];//取得类名称
  103.             
  104.             c=name_space[currName];
  105.             
  106.         }
  107. //        //添加一个静态方法
  108. //        t.each(p['static'],function(f,n){
  109. //            ns[cn][n]=f;
  110. //        });
  111. //        if(this.onCreate)
  112. //            this.onCreate(s[2],s[3],ns[cn].prototype);
  113.     },
  114.     resolve:function(n,o){//分解已有命名空间
  115.         var i,v;
  116.         o= o|| window;
  117.         if(n.indexOf('.')!=-1){
  118.             n=n.split('.');//对字符串进行分解
  119.             for(i=0,v=n.length;i<v;i++){
  120.                 o=o[n[i]];//取得已经有名称
  121.                 if(!o)
  122.                     break;
  123.             }
  124.         }
  125.         else { o=o[n];}
  126.         return o;
  127.     },
  128.     createNS:function(n,o){//创建命名空间,n是要创建的命名空间名
  129.         var i,v;
  130.         o=o || window;
  131.         
  132.         n=n.split('.');//对字符串进行分解
  133.         for(i=0;i<n.length;i++){
  134.             v=n[i];
  135.             if(!o[v])
  136.                 o[v]={};
  137.             
  138.             o=o[v];
  139.         }
  140.         
  141.         return o;
  142.     }
  143. };
  144. window.$=base;
  145. base.init;
  146. (function(){
  147.     base.createClass('static base.utils.Ajax',{
  148.         get:function(url,data,callback){
  149.             if(base.isFunction(data)){
  150.                 callback=data;
  151.                 data=null;
  152.             }
  153.            return this.Ajax({
  154.             type:"GET",
  155.             data:data,
  156.             url:url,
  157.             callback:callback
  158.            });
  159.         },
  160.        post:function(url,data,callback){
  161.             if(base.isFunction(data)){
  162.                 callback=data;
  163.                 data=null;
  164.             }
  165.            return this.Ajax({
  166.             type:"POST",
  167.             data:data,
  168.             url:url,
  169.             callback:callback
  170.            });
  171.         },
  172.         Ajax:function(s){
  173.             if(typeof s.data !="String" && s.data)
  174.                  s.data=this.param(s.data);
  175.              if(s.type.toLowerCase()=="get" && s.data!=""){
  176.                 s.url+=(s.url.match(//?/)?"":"?");
  177.                 s.url+=s.data;
  178.              }
  179.              if(s.type.toLowerCase()=="post"){
  180.                  s.url+=(s.url.match(//?/)?"":"?");
  181.              }
  182.              s.url+="&_="+Math.random();
  183.              var xmlHttp;
  184.              try
  185.              {
  186.                 xmlHttp=new XMLHttpRequest();
  187.              }
  188.              catch(e){
  189.                 try
  190.                 {
  191.                     xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  192.                 }
  193.                 catch(e){
  194.                     xmlHttp=new ActiveXObject("Microsft.XMLHTTP");
  195.                 }
  196.              }
  197.             if( xmlHttp == null){
  198.                 return ;
  199.             }
  200.             xmlHttp.onreadystatechange=function(){
  201.                 if(xmlHttp.readyState==4){
  202.                     if(xmlHttp.status==200){
  203.                         if(s.callback && s.callback!=null && s.callback!=""){
  204.                             var tmp=s.callback;
  205.                            eval(tmp(xmlHttp.responseText));
  206.                         }
  207.                     }
  208.                 }
  209.             }
  210.             xmlHttp.open(s.type,s.url,true);
  211.             xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  212.             if(s.type.toLowerCase()=="post"){
  213.                 xmlHttp.send(s.data);
  214.             }else{ xmlHttp.send(null);}
  215.         },
  216.         param:function(d){//取得序列化数值
  217.             var dataInfo=[];
  218.             if(d.constructor != Array && d)
  219.                 for(var i in d){
  220.                     if(d[i]  && d.constructor !=Array && typeof d !='String'){
  221.                        dataInfo.push(encodeURIComponent(i)+"="+encodeURIComponent(d[i]));
  222.                     }
  223.                 }
  224.              return dataInfo.join('&').replace(/%20/g, "+")
  225.         }
  226.     });
  227. })();
  228. //测试
  229.  var str=[{pra:"sf"},{ss:"ss"}];
  230. $.utils.Ajax.post("Default.aspx",{pra:"顶替",sss:"fdsfd"},function(){alert('ddfdfdsfsd');});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值