• 原生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);
        }
    复制代码
  • 相关阅读:
    SQL Server公共表表达式简介
    SQL Server实现递归查询(使用公共表表达式)
    Qt 怎么检测鼠标在不在某个控件上
    设计模式之命令模式要听话!
    Leetcode 119. 杨辉三角 II
    C++11智能指针shared_ptr的理解与使用示例
    Qt 纯C++项目发布为dll的方法(超详细步骤)
    error C1041: 无法打开程序数据库“xxx\vc140.pdb”;如果要将多个 CL.EXE 写入同一个 .PDB 文件,请使用/FS(亲测可用)
    WIN1064位编译OpenSSL详细教程
    Qt信号重载需要使用函数指针来实现信号/槽机制
  • 原文地址:https://www.cnblogs.com/bydzhangxiaowei/p/14194087.html
Copyright © 2020-2023  润新知