美文网首页
封装自己的Ajax函数

封装自己的Ajax函数

作者: 過尽千帆_YL | 来源:发表于2021-05-09 09:08 被阅读0次

1. 要实现的效果

// <!-- 1.导入自定义的ajax函数 -->
 <script src="./js/itheima.js"></script> 

  <script>
     // 调用自定义的 myAjax 函数,发起ajax函数请求
    myAjax({
      method: '请求类型',
      url: '请求地址',
      data: {
       // '请求参数对象'
      },
      success: function (res) {  // 成功的回调函数
        console.log(res)  // 打印数据
      }
    })
  </script>

2. 定义options参数选项

myAjax() 函数是我们自定义的 Ajax 函数,它接收一个配置对象作为参数,配置对象中可以配置如下属性:

  • method 请求的类型
  • url 请求的 URL 地址
  • data 请求携带的数据
  • success 请求成功之后的回调函数

3 .处理data参数

需要把 data 对象,转化成查询字符串的格式,从而提交给服务器,因此提前定义 resolveData 函数如下:

/**
 *
 * @param {*} data 将对象转成查询字符串
 * username=张三&age=20
 */
// 将对象转为查询字符串
function resolveData(data) {
  var arr = [];
  for (var key in data) {
    var str = key + '=' + data[key]; //key=value
    arr.push(str);
  }
  return arr.join('&'); //将数组转为字符串并以&分隔
}

4. 定义 myAjax 函数

在 myAjax() 函数中,需要创建 xhr 对象,并判断请求的类型,对请求类型进行 if … else … 的判断:

function myAjax(options) {
  //1.创建xhr对象
  let xhr = new XMLHttpRequest();
  var params = resolveData(options.data);
  //判断请求方式是GET 还是post
  //toUpperCase() 方法用于把字符串转换为大写。
  if (options.type.toUpperCase() == 'GET') {
    //2.调用open    options.url + '?' + params
    xhr.open(options.type, params ? options.url + '?' + params : options.url);
    xhr.send();
  } else if (options.type.toUpperCase() == 'POST') {
    xhr.open(options.type, options.url);
    //3.设置请求头
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    //4.设置数据
    xhr.send(params);
  }

5 .监听注册事件

监听 onreadystatechange 事件:

  // 注册监听
  xhr.onreadystatechange = function () {
    if (xhr.readyState === 4 && xhr.status === 200) {
      // 把服务器的json字符串转成js对象
      var obj = JSON.parse(xhr.responseText);
      options.success && options.success(obj);
    }
  };
}

相关文章

  • ajax函数封装

    ajax函数封装 封装一个ajax

  • 原生js封装AJAX

    函数封装: 2.封装Ajax

  • 原生js封装AJAX

    函数封装: 2.封装Ajax

  • 微信小程序-ajax的使用和封装

    微信小程序的ajax使用方法: ajax 函数封装 在我们做项目的时候,为了方便复用,需要封装ajax函数方便随时...

  • 封装自己的Ajax函数

    1. 要实现的效果 2. 定义options参数选项 myAjax() 函数是我们自定义的 Ajax 函数,它接收...

  • js 原生ajax的封装

    概念 ajax是前端常用技术,今天用原生js封装了一个ajax函数,类似于jquery库的$.ajax()函数,大...

  • ajax 实现原理

    平时我们在做项目时通常利用jQuery封装好的ajax函数:$.ajax(),$.get(),$.post(),用...

  • ajax函数封装

    //ajax封装/obj={type: 提交方式 string "",url: 请求道服务器路径 ...

  • AJAX封装函数

    用ajax的局部刷新来给网站提升用户体验我们已经用过很多了,ajax已然成为了前端开发最重要的“工具”之一。 但是...

  • AJAX 函数封装

    封装函数,采用面向对象的形式封装,用函数包裹,防止空间浪费,函数附带转码功能 自调用函数(function( ){...

网友评论

      本文标题:封装自己的Ajax函数

      本文链接:https://www.haomeiwen.com/subject/kugpdltx.html