原生js封装的ajax方法示例


Posted in Javascript onAugust 02, 2018

本文实例讲述了原生js封装的ajax方法。分享给大家供大家参考,具体如下:

众所周知,框架之间会有冲突,这是源生js就起到作用了,下面介绍一种源生js封装的ajax请求。

function ajax(options) {
  options = options || {};
  options.type = (options.type || "GET").toUpperCase();
  options.dataType = options.dataType || "json";
  var params = formatParams(options.data);
  //创建xhr对象 - 非IE6
  if (window.XMLHttpRequest) {
    var xhr = new XMLHttpRequest();
  } else { //IE6及其以下版本浏览器
    var xhr = new ActiveXObject('Microsoft.XMLHTTP');
  }
  //GET POST 两种请求方式
  if (options.type == "GET") {
    xhr.open("GET", options.url + "?" + params, true);
    xhr.send(null);
  } else if (options.type == "POST") {
    xhr.open("POST", options.url, true);
    //设置表单提交时的内容类型
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.send(params);
  }
  //接收
  xhr.onreadystatechange = function () {
    if (xhr.readyState == 4) {
      var status = xhr.status;
      if (status >= 200 && status < 300) {
        options.success && options.success(xhr.responseText);
      } else {
        options.fail && options.fail(status);
      }
    }
  }
}
//格式化参数
function formatParams(data) {
  var arr = [];
  for (var name in data) {
    arr.push(encodeURIComponent(name) + "=" + encodeURIComponent(data[name]));
  }
  arr.push(("v=" + Math.random()).replace(".",""));
  return arr.join("&");
}

调用方法

ajax({
  url: "data.json",
  type: "GET",
  data: {},
  dataType: "json",
  success: function (response) {
    // 此处放成功后执行的代码
     // 解析返回的字符串 转为json对象
    var usingdata = eval("("+response+")").data;
  }
  fail: function (status) {
    // 此处放失败后执行的代码
  }
});

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
firefox中用javascript实现鼠标位置的定位
Jun 17 Javascript
javascript结合fileReader 实现上传图片
Jan 30 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
May 11 Javascript
BootStrap表单控件之文本域textarea
May 23 Javascript
JavaScript适配器模式详解
Oct 19 Javascript
微信小程序实现全国机场索引列表
Jan 31 Javascript
微信小程序实现验证码获取倒计时效果
Feb 08 Javascript
vue登录以及权限验证相关的实现
Oct 25 Javascript
《javascript设计模式》学习笔记四:Javascript面向对象程序设计链式调用实例分析
Apr 07 Javascript
Vue自动构建发布脚本的方法示例
Jul 24 Javascript
javascript 数组(list)添加/删除的实现
Dec 17 Javascript
vue3 自定义图片放大器效果的示例代码
Jul 23 Vue.js
JS实现根据指定值删除数组中的元素操作示例
Aug 02 #Javascript
详解Angular中通过$location获取地址栏的参数
Aug 02 #Javascript
JavaScript防止全局变量污染的方法总结
Aug 02 #Javascript
微信小程序之自定义组件的实现代码(附源码)
Aug 02 #Javascript
Array数组对象中的forEach、map、filter及reduce详析
Aug 02 #Javascript
利用Blob进行文件上传的完整步骤
Aug 02 #Javascript
vue.js图片转Base64上传图片并预览的实现方法
Aug 02 #Javascript
You might like
支持中文、字母、数字的PHP验证码
2015/05/04 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
Jquery中增加参数与Json转换代码
2009/11/20 Javascript
js 3种归并操作的实例代码
2013/10/30 Javascript
javascript 回到顶部效果的实现代码
2014/02/17 Javascript
使用JavaScript 编写简单计算器
2014/11/24 Javascript
javascript原型模式用法实例详解
2015/06/04 Javascript
JavaScript操作HTML元素和样式的方法详解
2015/10/21 Javascript
JavaScript+html5 canvas绘制的小人效果
2016/01/27 Javascript
基于jQuery实现表格内容的筛选功能
2016/08/21 Javascript
jQuery图片轮播实现并封装(一)
2016/12/03 Javascript
详解angular2采用自定义指令(Directive)方式加载jquery插件
2017/02/09 Javascript
JavaScript 中 apply 、call 的详解
2017/03/21 Javascript
Javascript实现base64的加密解密方法示例
2017/06/27 Javascript
基于vue-video-player自定义播放器的方法
2018/03/21 Javascript
基于webpack4搭建的react项目框架的方法
2018/06/30 Javascript
JavaScript高级函数应用之分时函数实例分析
2018/08/03 Javascript
JS实现的杨辉三角【帕斯卡三角形】算法示例
2019/02/26 Javascript
最全vue的vue-amap使用高德地图插件画多边形范围的示例代码
2020/07/17 Javascript
vue elementui tree 任意级别拖拽功能代码
2020/08/31 Javascript
[03:22]DSPL第一期精彩集锦:酷炫到底!
2014/11/07 DOTA
[01:15:56]2018DOTA2亚洲邀请赛3月30日 小组赛A组 TNC VS Newbee
2018/03/31 DOTA
[00:32]2018DOTA2亚洲邀请赛出场——VP
2018/04/04 DOTA
[03:17]史诗级大片应援2018DOTA2国际邀请赛 致敬每一位坚守遗迹的勇士
2018/07/20 DOTA
python基础教程之面向对象的一些概念
2014/08/29 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
2019/12/19 Python
python小白切忌乱用表达式
2020/05/29 Python
肯尼亚网上商城:Kilimall
2016/08/20 全球购物
继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
2015/11/18 面试题
运动会广播稿500字
2014/01/28 职场文书
信息专业学生学习的自我评价
2014/02/17 职场文书
境外导游求职信
2014/02/27 职场文书
大学生学习2014全国两会心得体会
2014/03/13 职场文书
庆祝教师节标语
2014/10/09 职场文书
五好家庭事迹材料
2014/12/20 职场文书
2019如何书写演讲稿?
2019/07/01 职场文书