原生ajax的get和post方法封装

原生ajax的get和post方法封装:https://www.cnblogs.com/qiuxiaozhen/p/10568314.html

 

get 方法

复制代码
复制代码
    function serialize (data) {
      if (!data) {
        return '';
      }
      
      var paris = [];
      for (var key in data) {
        if (!data.hasOwnProperty(key) || typeof data[key] === 'function') {
          continue;
        }
        var name = encodeURIComponent(key);
        var value = encodeURIComponent(data[key].toString());
        paris.push(name + '=' + value);
      }
      return paris.join('&');
    }

    function get (url, options, callback) {
      var req;
      if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
      } else if (window.ActiveXObject) { // 兼容IE7及以下版本
        req = new ActiveXObject();
      }
      
      req.onreadystatechange = function () {
        if (req.readyState === 4) {
          if (req.status === 200) {
            console.log('请求成功');
            callback(req.response);
          }
        } else {
          console.log('请求中...');
        }
      }
      
      // 将传递的参数序列化
      if (serialize(options) !== '') {
        url = url + '?' + serialize(options);
      }

      req.open('get', url);
      req.send(null);
    }
复制代码
复制代码

 post方法

复制代码
复制代码
    function serialize (data) {
      if (!data) {
        return '';
      }
      
      var paris = [];
      for (var key in data) {
        if (!data.hasOwnProperty(key) || typeof data[key] === 'function') {
          continue;
        }
        var name = encodeURIComponent(key);
        var value = encodeURIComponent(data[key].toString());
        paris.push(name + '=' + value);
      }
      return paris.join('&');
    }

    function post (url, options, callback) {
      var req;
      if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
      } else if (window.ActiveXObject) { // 兼容IE7及以下版本
        req = new ActiveXObject();
      }
      
      req.onreadystatechange = function () {
        if (req.readyState === 4) {
          if (req.status === 200) {
            console.log('请求成功');
            callback(req.response);
          }
        } else {
          console.log('请求中...');
        }
      }

      req.open('post', url);
      req.send(serialize(options));
    }
复制代码
复制代码

get与post方法结合

复制代码
复制代码
    function serialize (data) {
      if (!data) {
        return '';
      }
      
      var paris = [];
      for (var key in data) {
        if (!data.hasOwnProperty(key) || typeof data[key] === 'function') {
          continue;
        }
        var name = encodeURIComponent(key);
        var value = encodeURIComponent(data[key].toString());
        paris.push(name + '=' + value);
      }
      return paris.join('&');
    }

    function request (method, url, options, callback) {
      var req;
      if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
      } else if (window.ActiveXObject) { // 兼容IE7及以下版本
        req = new ActiveXObject();
      }
      
      req.onreadystatechange = function () {
        if (req.readyState === 4) {
          if (req.status === 200) {
            console.log('请求成功');
            callback(req.response);
          }
        } else {
          console.log('请求中...');
        }
      }
      
      url = method === 'get' && serialize(options) !== '' ?  url + '?' + serialize(options) : url;
      let sendParams = method === 'get' ? null : serialize(options);
      
      req.open(method, url);
      req.send(sendParams);
    }
复制代码
复制代码

posted on   byd张小伟  阅读(139)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2017-12-26 锋利的jQuery 要点归纳(一) jQuery选择器
2017-12-26 jQuery选择器和选取方法
2017-12-26 adb logcat 查看日志
2017-12-26 android adb logcat获取日志文件
2017-12-26 用adb logcat抓取log
2017-12-26 怎样用adb抓取log?
2017-12-26 Android使用adb抓完整Log
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示