ajax 无刷新提交类(修正版)

http://blog.csdn.net/fzzwake/archive/2008/03/14/2182749.aspx

我的这篇文章里发表了一个ajax类,非常方便。可是最近在公司的项目中发现,同一个页面同时执行两个ajax提交会导致冲突,于是把AJAX类修改了下,重新发布一下修正版:

最近又加入了超时控制,数据传入格式也由字符串变成数组!

 

  1. /*
  2. ##  作者:夜无眠
  3. ##  QQ:27262681
  4. 此类用法示例
  5. var ajax = new ajax;
  6. var db = new Array();
  7. db['k'] = "dddddddd";
  8. db['a'] = "basdfads";
  9. ajax.timeout = 1000 ;//超时时间,单位:毫秒 ;设为0则由浏览器系统决定!
  10. ajax.send("b.php",db,function (msg) {alert(msg);},"POST");
  11. 第四个参数POST可省略,默认为POST,可选GET
  12. 如果返回404错误等,msg为false;
  13. */
  14. function ajax(){//参数为返回执行函数,this.reback为返回值
  15.     this.timeout = 0;
  16.     this.send=function (url,db,func,method){
  17.         var callback=func;
  18.         method=method?method.toUpperCase():"POST";
  19.         if(window.ActiveXObject){
  20.             var http = new ActiveXObject("Microsoft.XMLHTTP");
  21.         }else if(window.XMLHttpRequest){
  22.             var http = new XMLHttpRequest();
  23.         }
  24.         var sf = this;//复制对象
  25.         http.onreadystatechange=function () {
  26.             sf.f(http,callback)
  27.         }
  28.         if(db){
  29.             var dbstr='';
  30.             for (i in db) {
  31.                 dbstr += dbstr ? '&'+i+'='+encodeURIComponent(db[i]) : i+'='+encodeURIComponent(db[i]);
  32.             }
  33.             db = dbstr;
  34.         }
  35.         http.open(method,url,true);
  36.         if (method=='POST') {
  37.             http.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  38.         }
  39.         http.send(db);
  40.         if (sf.timeout > 0) {
  41.             setTimeout(function () {http.abort();},sf.timeout);
  42.         }
  43.     }
  44.     this.f=function (http,callback){
  45.         if(http.readyState == 4){
  46.             if(http.status == 200){
  47.                 var reback = http.responseText;
  48.                 callback(reback);
  49.                 http=null;//注销http实例
  50.             }else {
  51.                 callback(false);
  52.                 http=null;
  53.             }
  54.         }
  55.     }
  56. }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值