二、封装AJAX

近来觉得自己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);
    }
  }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理。awesome-jav...
    白水螺丝阅读 2,673评论 0 24
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,360评论 25 709
  • 相约犄角镇 一边读一边划出喜欢的句子,词语 画的不好,同学们不要笑
    乐乐_0fd2阅读 278评论 0 2
  • 街上的小孩 衣衫褴褛 双手虔诚合十 半口破碗却像是在行乞 行人看着卑微的笑意 碗里叮咚的硬币 你瘦小的手掌 捧起一...
    歆戈阅读 204评论 0 2
  • 五个月的坚守 换来匆匆一别 割舍不下的是 那柔柔的海风 总以为昂首离开才是最好的离别 带着收获,也接受遗憾 多多少...
    秋凉初透阅读 217评论 0 2

友情链接更多精彩内容