Javascript 封装的ajax方法

发布于 2022-09-30 19:56:08 字数 6114 浏览 17 评论 0

转:夕阳茶

Javascript 封装的ajax方法

  1. //ajax的封装  
  2. var Ajax = {  
  3.     method: 'post',  
  4.     asynchronous: true,  
  5.     proxy: null,  
  6.     contentType: "application/x-www-form-urlencoded",  
  7.    
  8.     create: function () {  
  9.         var me = this, proxy;  
  10.         var xmlhttpObj = ['MSXML2.XMLHTTP.3.0',  
  11.                        'MSXML2.XMLHTTP',  
  12.                        'Microsoft.XMLHTTP'];  
  13.         if (window.XMLHttpRequest)// firefox   
  14.         {  
  15.             proxy = new XMLHttpRequest();  
  16.         }  
  17.         else if (typeof ActiveXObject != "undefined")// IE   
  18.         {  
  19.             for (var i = 0, len = xmlhttpObj.length; i < len; i++) {  
  20.                 if (!proxy)  
  21.                     proxy = new ActiveXObject(xmlhttpObj[i]);  
  22.                 else
  23.                     break;  
  24.             }  
  25.         }  
  26.         return proxy;  
  27.     },  
  28.     stateChange: function (proxy, callback) {  
  29.         var me = this;  
  30.         var readyState = proxy.readyState;  
  31.         if (readyState == 4 && proxy.status == 200)  
  32.             (callback || function () { }).call(me, proxy.responseText, proxy);  
  33.     },  
  34.     analyzeParam: function (params) {  
  35.         var arrp = [];  
  36.         for (var p in (params || {})) {  
  37.             arrp.push("&" + p + "=" + params[p]);  
  38.         }  
  39.         return arrp.join().replace(/\,/g, "");  
  40.     },  
  41.     request: function (cfg) {  
  42.         var me = this;  
  43.         var proxy = me.create();  
  44.         if (proxy) {  
  45.             proxy.onreadystatechange = function () {  
  46.                 me.stateChange.call(me, proxy, cfg.callback);  
  47.             };  
  48.         }  
  49.         var param = me.analyzeParam(cfg.params);  
  50.         try {  
  51.             proxy.open(me.method, cfg.url, me.asynchronous);  
  52.             proxy.setRequestHeader("Content-type", me.contentType);  
  53.             proxy.send(me.analyzeParam.call(me, cfg.params));  
  54.         }  
  55.         catch (ex) {  
  56.             alert(ex.message)  
  57.         }  
  58.     }  
  59. };  
  60.    
  61.    
  62. //调用方法  
  63. Ajax.request({  
  64.       url:"text.aspx",  
  65.       params:{name:'aa',age:20},  
  66.       callback:function(response){alert(response)}  
  67. });

复制代码

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文