简单封装ajax

  1. (function (window) {  
  2.     //避免污染全局变量  
  3.     function ajax(options) {  
  4.         var init = {  
  5.             type: 'get',  
  6.             url: "",  
  7.             data: {},  
  8.             async: true,  
  9.             success: function (txt) {  
  10.             },  
  11.             error: function () {  
  12.             },  
  13.             cache: true,  
  14.             beforeSend: function () {  
  15.             },  
  16.             complete: function () {  
  17.             }  
  18.         };  
  19.         options = merge(init, options);  
  20.         options.data = hb(options.data);  
  21.         var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");  
  22.         //用一个变量来保存是否是post提交方式  值为布尔值  
  23.         var is_post = /^post$/i.test(options.type);  
  24.         //来判断是否需要处理url get方式的data需要加到url中  
  25.         if (!is_post) {  
  26.             //没有考虑到url可能已经有参数  
  27.             //优先级的问题 &的问题  
  28.             options.url += (options.url.indexOf('?') > -1 ? "&" : '?') + options.data;  
  29.             //处理缓存 是否加上时间戳  
  30.             options.url += options.cache ? "" : '&__time__=' + new Date().getTime();  
  31.         }  
  32.         xhr.open(options.type, options.url, options.async);  
  33.         //开始动画  
  34.         options.beforeSend();  
  35.         //设置头文件  
  36.         if (is_post) {  
  37.             xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");  
  38.         }  
  39.         xhr.send(options.data);  
  40.         xhr.onreadystatechange = function () {  
  41.             if (xhr.readyState == 4) {  
  42.   
  43.                 if (xhr.status == 200) {  
  44.                     //提供xhr的使用权限  方便在使用时可以获取xhr的其他属性  
  45.                     options.success(xhr.responseText, xhr);  
  46. //                    complete();  
  47.                 } else {  
  48.                     options.error(xhr.status, xhr);  
  49.                 }  
  50.                 options.complete();  
  51.             }  
  52.         }  
  53.   
  54.     }  
  55.     function merge(init, add) {  
  56.         for (var key in add) {  
  57.             if (key in init) {  
  58.                 init[key] = add[key];  
  59.             }  
  60.         }  
  61.         return init;  
  62.     }  
  63.     function hb(obj) {  
  64.         var str = "";  
  65.         for(var key in obj){  
  66.             str+= key+'='+obj[key]+'&';  
  67.         }  
  68.         return str;  
  69.     }  
  70.     window.ajax=ajax;  
  71. })(window);  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值