二、封装AJAX

作者: 你看Ta好像条狗啊 | 来源:发表于2018-04-12 16:15 被阅读40次

近来觉得自己JavaScript基础较为薄弱,去啃一些知识(例如: JavaScript设计模式等)越来越困难,所以现在想要巩固一下JavaScript知识,此节就来写一个如何自己封装AJAX。

可能我们使用AJAX的时候都是使用JQuery这些已经封装好的类库,或者是使用类似Angular的Http、HttpClient这些框架已经封装好的方法协议,但是如果我们想用原生去写一个项目时怎么办呢?

这时候引用类库或者框架就不符合原生的标准了,所以我们需要自己去实现一个Ajax封装。

/**
 * 封装ajax函数
 * @param {string} opt.method http连接的方式,包括POST和GET两种,默认使用GET
 * @param {string} opt.url 发送的url请求
 * @param {boolean} opt.async 是否为异步请求,true为异步,false为同步,默认为true
 * @param {object} opt.data 传到服务器的数据
 * @param {function} opt.success ajax发送并接收成功时调用的回掉函数
 */
function ajax(opt) {
  var opt = opt || {},
      type = opt.type || 'GET',
      url = opt.url || '',
      async = opt.async || true,
      data = opt.data || null,
      success = opt.success || function() {},
      xmlHttp = null;
  
  if(XMLHttpRequest) {
    xmlHttp = new XMLHttpRequest();
  } else {
    xmlHttp = new ActiveXObject('Miscroft.XMLHTTP');
  }

  var params = [];
  for(var key in data) {
    params.push(key + '=' + data[key]);
  }
  var dataStr = params.join('&');
  if(type === 'POST') {
    xmlHttp.open(type, url, async);
    xmlHttp.setRequestHander('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8');
    xmlHttp.send(dataStr);
  } else {
    xmlHttp.open(type, url + '?' + dataStr, async);
    xmlHttp.send(null);
  }
  xmlHttp.onreadystatechange = function() {
    if(xmlHttp.readyState === 4 && xmlHttp.status === 200) {
      success(xmlHttp.responseText);
    }
  }
}

相关文章

  • Ajax上

    一、封装ajax 二、调用封装好的ajax

  • ajax: 封装

    一、封装ajax 二、main.js 引入封装好的 ajax 三、GET请求 引用封装好的 ajax 四、POST...

  • jQuery中的Ajax

    jQuery中的ajax 封装第一层 - 类似于原生ajax的用法$ajax 封装第二层 - 基于第一层再次封装$...

  • Ajax

    标签: Ajax 正文 一、实现一个原生Ajax 二、Ajax状态 三、将原生的 ajax 封装成 promise

  • ajax函数封装

    ajax函数封装 封装一个ajax

  • html5的ajax学习(三)

    一.原生的ajax封装 原生的ajax的调用 二.jquery的ajax 2.1 jquery的语法 三. fun...

  • 二、封装AJAX

    近来觉得自己JavaScript基础较为薄弱,去啃一些知识(例如: JavaScript设计模式等)越来越困难,所...

  • jQuery中的ajax

    一、jQuery中的ajax 封装第一层 - 类似于原生ajax的用法 $ajax 封装第二层 - 基于第一层再次...

  • jQuery中的ajax

    一、jQuery中的ajax 封装第一层 - 类似于原生ajax的用法$ajax 封装第二层 - 基于第一层再次封...

  • Jquery Ajax 封装

    Jquery Ajax封装 Jquery Ajax 调用

网友评论

    本文标题:二、封装AJAX

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