xhr简单封装ajax

xhr简单封装ajax

// 设置默认值

const defaults = {

  type: "get",

  url: "",

  async: true,

  data: {},

  header: {

​    "Content-Type": "application/x-www-form-urlencoded",

  },

  success: function () {},

  error: function () {},

};

function dealParams(data) {

  let params = "";

  for (let k in data) {

​    params += k + "&" + data[k];

  }

  params = params.trim().lenth > 0 ? params.slice(0, params.length) : "";

}

const ajax = (options) => {

  // 将传入的值替换默认值

  Object.assign(defaults, options);

  // 创建xhr对象

  const xhr = new XMLHttpRequest();

  // 1.get请求

  if (defaults.type.toLocaleLowerCase() == "get") {

​    params = dealParams(defaults.data);

​    if (params) {

​      defaults.url = "?" + params;

​    }

​    defaults.data = null;

  } else if (defaults.type.toLowerCase() == "post") {

​    // 2.post请求

​    xhr.setRequestHeader("Content-Type", defaults.header["Content-Type"]);

​    const contentType = defaults.header["Content-Type"];

​    if (contentType.includes("application/json")) {

​      defaults.data = JSON.stringify(defaults.data);

​    } else if (contentType.includes("application/x-www-form-urlencoded")) {

​      defaults.data = dealParams(defaults.data);

​    }

  }

  // 监听load事件,和readystatechange

  try {

​    xhr.addEventListener("load", () => {

​      if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304) {

​        defaults.success(xhr.responseText, xhr);

​      } else {

​        defaults.error(xhr.responseText, xhr);

​      }

​    });

  } catch (err) {

​    defaults.error(err, xhr);

  }

  xhr.addEventListener("error", () => {

​    defaults.error(xhr);

  });

  xhr.open(defaults.type, defaults.url, defaults.async);

  xhr.send(defaults.data);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值