`

ajax封装类

阅读更多
  1. function ajax(method,synchronous){   
  2.     
  3.     this._httpReq = false;  /*ajax初始化对象*/  
  4.     this.method = method;  /*get|post*/  
  5.     this.syn = synchronous;   /*是否采用异步请求,默认true*/  
  6.     
  7.     this.url = "";   /*提交异步请求的url地址*/  
  8.     this.resType = "";  /*异步请求返回数据类型text|xml*/  
  9.     this.callback = "";  /*异步请求完成后的回滚函数*/  
  10.     this.loading = "";  /*load函数*/  
  11.     this.content = null/*Ajax中send方法的参数*/  
  12.     this.readystate = -1; /*ajax的请求状态*/  
  13.     this.state = -1;  /*http请求响应代码*/  
  14.     
  15.      /************ get/set方法开始 ***************/  
  16.      //设置提交异步请求的url地址   
  17.      this.setUrl = function (url){   
  18.           this.url = url;   
  19.      }   
  20.     
  21.      //设置异步请求返回数据类型text|xml   
  22.      this.setResType = function (restype){   
  23.           this.resType = restype;   
  24.      }   
  25.     
  26.      //设置回滚函数   
  27.      this.setCallback = function (func){   
  28.           this.callback = func;   
  29.      }   
  30.     
  31.      //设置load函数   
  32.      this.setLoading = function (loadFunc){   
  33.           this.loading = loadFunc;   
  34.      }   
  35.     
  36.      //设置send自带的参数值,默认null   
  37.      this.setContent = function (contents){   
  38.         this.content = contents;   
  39.      }   
  40.      /*********get/set方法结束*******/  
  41.     
  42.      /*********状态显示方法*********/  
  43.      //调用window.alert方法   
  44.      this.alert = function (msg){   
  45.          window.alert(msg);   
  46.      }   
  47.     
  48.      //调用window.status的方法   
  49.      this.status = function (msg){   
  50.           window.status = msg;   
  51.      }   
  52.      /*********状态显示方法结束*********/  
  53.     
  54.      /*************执行方法开始*****************/  
  55.      //创建HttpXMLRequest   
  56.      this.createXMLRequest = function(){   
  57.      if(window.XMLHttpRequest){   
  58.            this._httpReq = new XMLHttpRequest();   
  59.       
  60.            if(this._httpReq.overrideMimeType){   
  61.                this._httpReq.overrideMimeType("text/xml");   
  62.            }   
  63.       }else if(window.ActiveXObject){   
  64.             try{   
  65.                  this._httpReq = new ActiveXObject("Msxml2.XMLHTTP");   
  66.             }catch(e){   
  67.                   try{   
  68.                        this._httpReq = new ActiveXObject("Microsoft.XMLHTTP");   
  69.                   }catch(e){}   
  70.             }    
  71.       }   
  72.  }   
  73.     
  74.      //初始化ajax对象   
  75.      this.init = function(){   
  76.           this.createXMLRequest();   
  77.      }   
  78.     
  79.      //发送一个http请求   
  80.      this.send = function (){   
  81.           if(this.resType.toLowerCase()=="post"){   
  82.                   _httpReq.setRequestHeader("Content-Type","application/x-www-form-urlencoded");   
  83.           }   
  84.           this._httpReq.open(this.method,this.url,this.syn);   
  85.           this._httpReq.send(this.content);   
  86.      }   
  87.     
  88.         //取消一个http请求   
  89.         this.abort = function (){   
  90.                this._httpReq.abort();   
  91.         }   
  92.     
  93.       this.callbackState = function(){   
  94.             switch(this._httpReq.readyState){   
  95.                    case 0:   
  96.                             this.readystate = 0;   
  97.                             break;   
  98.                    case 1:   
  99.                             this.readystate = 1;   
  100.                             break;   
  101.                    case 2:   
  102.                             this.readystate = 2;   
  103.                             break;   
  104.                    case 3:   
  105.                             this.readystate = 3;   
  106.                             break;   
  107.                    case 4:   
  108.                             this.readystate = 4;   
  109.                             switch(this._httpReq.status){   
  110.                                    case 200:   
  111.                                            eval(this.callback);   
  112.                                            break;   
  113.                                    case 202:   
  114.                                            this.status("请求处理中,还没处理完毕!");   
  115.                                            break;   
  116.                                    case 400:   
  117.                                            this.status("错误的请求!");   
  118.                                            break;   
  119.                                    case 404:   
  120.                                            this.status("请求资源未找到!");   
  121.                                            break;   
  122.                                    case 500:   
  123.                                            this.status("内部服务器错误,请联系管理员!");   
  124.                                            break;   
  125.                                    default:   
  126.                                            this.status("返回数据失败,"+this._httpReq.status);   
  127.                                            break;   
  128.                               }   
  129.                               break;   
  130.                    default:   
  131.                            this.readystate = 0;   
  132.                            break;   
  133.              }   
  134.      }   
  135.   
  136.      this.onReadyStateChange = function (){   
  137.             var owner = this;   
  138.             this._httpReq.onreadystatechange = function(){   
  139.                    owner.callbackState.call(owner);   
  140.             }   
  141.      }   
  142.  /*************执行方法结束*****************/  
分享到:
评论
2 楼 jmwjy 2012-07-05  
还有,能否指点下这个问题

看了你的文章,我才我发现我好象也是要写一个封装(封装对我来说,太高深了),但是总有问题。

http://bbs.51js.com/thread-90328-1-1.html
1 楼 jmwjy 2012-07-05  
博主,能否指点下,这个怎么调用……
我正在学ajax,希望您指点下

相关推荐

    自己用的简单封装AJAX类

    今天找寻AJAX类,使用起来不是很方便,算了自己封装一个 注:简单封装,使用简单

    收集的ajax封装类

    搜集的ajax类,同步异步,post get 都有涉及。并封装成类以便调用。

    超轻量级好用的js AJAX封装类

    如果是做基于广域网应用的web程序,这个ajax类最合适不过了,ajax功能全,简单好用堪比jquery,最重要的是,它无比轻量级,与jquery、extjs等框架的ajax相比,它小多了,可大大减轻网络传输压力,有效提升web访问...

    ajax封装类AJAXRequestv0.8.10修正版

    注意:从脚本之家下载的此版本,已经修正了,可以直接使用,不必修改了在写 AJAXRequest v0.8.10 版时,没有在 IE6 下面测试,导致在 IE6 下面出现“XMLHttpRequest未定义”的错误。 可以按如下方法修正,在 ajax...

    AJAX封装类使用指南

    主要介绍了AJAX封装类使用指南,需要的朋友可以参考下

    Ajax封装

    一个Ajax封装类,附有数用说明。

    封装ajax的js类

    封装ajax与servlet通信的js类,欢迎指正

    Ajax 动态表单验证封装类附示例

    Ajax 动态表单验证封装类附示例Ajax 动态表单验证封装类附示例

    自己封装的Ajax类

    3、封装了访问Ajax和WebService的API。WebService兼容SOAP1.1和SOAP1.2 4、该资源为作者本人劳动成果。使用方式可以参考另一资源(javascript访问WebService,js未经封装,但使用方式一样)如有疑问或建议请留言,如有...

    浅析jQuery Ajax通用js封装

    本文大概分为三步实现...第二步:开发Ajax封装类,已测试通过,可以直接调用,直接贴代码,讲解就省了 /***************************************************************** jQuery Ajax封装通用类 (linjq) *****

    封装ajax上传通用类

    封装ajax上传通用类,方便使用,省去繁琐步骤.

    jquery Ajax 全局调用封装实例详解

    前言: 有一种情况:全站都要用异步方式来调用 数据,提交数据,那么你每次操作 都会要$.ajax({…..}) 写重复的方法 和代码,冗余...第二步:开发Ajax封装类,已测试通过,可以直接调用,直接贴代码,讲解就省了 /***

    web ajax 的使用 js封装

    ajax的使用,在js中已经封装好的类库。在真实项目中很有用的一个ajax

    ajaxRequest.js(ajax get post方法封装,方便前端调用)

    封装jquery ajax方法,方便调用,避免在代码中频繁使用 $.ajax({ type: 'GET', url: url, ...... )}; 统一调用公共方法即可,区分同步异步,get post!希望对大家有帮助

    已封装Ajax操作类

    已封装的Ajax操作类,可传入方法,获取状态。使用起来还是挺方便的

    Ajax 简单封装类库

    ajax轻量级封装,简单实用,带有详细注释。 一、同一个对象可以发送多个请求,按顺序执行请求,有简单的超时机制,httpXMLRequest对象复用,无序的可以建立多个对象发送请求来实现; 二、兼容IE,FF,支持同步、异步...

    一个ajax功能的JS xml读取封装类代码.rar

    一个实现ajax功能的JS xml读取封装类代码,在这个JavaScript类里面,有核心的读取XML文件的代码,同时还包括了新建XML文档对象、在IE下使用ActiveX来创建,异步读取XML文件,创建XMLHttp对象,以备XML文档对象无法...

    jQuery Ajax 全局调用封装实例代码详解

    有一种情况:全站都要用异步方式来调用 数据,提交数据,那么你每次操作 都会要$.ajax({…..}) 写重复的方法 和代码,冗余太大...第二步:开发Ajax封装类,已测试通过,可以直接调用,直接贴代码,讲解就省了 /*******

Global site tag (gtag.js) - Google Analytics