Ajax封装函数

项目场景:

提示:这里简述项目相关背景:

例如:当需要发送Ajax请求时,可以通过调用该Ajax封装函数,减少重复书写的麻烦。


导入reAjax.js

提示:这里描述如何使用Ajax封装函数:

例如:我们要在自己的项目中发送Ajax请求首先要导入reAjax.js文件:

<script src="reAjax.js"></script>

参数分析:

提示:这里我们对reAjax函数参数进行分析:

methed:请求方式
url:请求地址
data:携带参数(可选)
success:回调函数

reAjax({
  methed: 'GET',
  url: 'http://www.liulongbin.top:3006/api/getbooks',
  //data: {} 可选
  success: resp => console.log(resp)
});

函数解析:

提示:这里分析reAjax函数具体实现过程:

/* reAjax(ajaxObj: Object)
 * Ajax请求响应封装
 * @param (methed) 请求方式
 * @param (url) 请求地址
 * @param (data) 携带参数(可选)
 * @param (success) 回调函数
 */

const reAjax = ajaxObj => {
  let xhr = new XMLHttpRequest();//创建xhr对象
  //判断发送什么请求
  if(ajaxObj.methed === 'GET') {
    //判断是否传递参数
    if(ajaxObj.data) {
      xhr.open('GET',`${ajaxObj.url}?${resolveData(ajaxObj.data)}`);
    }
    else {
      xhr.open('GET',ajaxObj.url);
    }
    xhr.send();
  }
  else if(ajaxObj.methed === 'POST') {
    xhr.open('POST', ajaxObj.url);
    xhr.setRequestHeader('Content-Type', 'application/x-WWW-form-urlencoded');//设置Content-Type属性(固定写法)
    xhr.send(resolveData(ajaxObj.data));
  }
  else {
    console.log(error);
  }
  // 监听readystatechange事件
  xhr.addEventListener('readystatechange', () => {
    if(xhr.readyState === 4 && xhr.status === 200) {
      ajaxObj.success(JSON.parse(xhr.responseText));
    }
  })
}

//转换查询字符串
const resolveData = data => {
  if(data) {
    let arr = [];
    for(k in data) {
      arr.push(`${k}=${data[k]}`);
    }
    return `${arr.join('&')}`;
  }
}

总结:

该函数主要运用于基础Ajax请求,封装函数易于降低代码的耦合性,提高代码质量。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shar豪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值