原生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 相关文章推荐
JavaScript通过RegExp实现客户端验证处理程序
May 07 Javascript
IE网页js语法错误2行字符1、FF中正常的解决方法
Sep 09 Javascript
JS如何判断移动端访问设备并解析对应CSS
Nov 27 Javascript
关于JS数组追加数组采用push.apply的问题
Jun 09 Javascript
一个通过script自定义属性传递配置参数的方法
Sep 15 Javascript
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
Oct 16 Javascript
微信小程序-滚动消息通知的实例代码
Aug 03 Javascript
AngularJS 表单验证手机号的实例(非必填)
Nov 12 Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
Apr 26 Javascript
适合前端Vue开发童鞋的跨平台Weex的使用详解
Oct 16 Javascript
koa2的中间件功能及应用示例
Mar 05 Javascript
前端JS获取URL参数的4种方法总结
Apr 05 Javascript
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屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT
2013/03/06 PHP
mcrypt启用 加密以及解密过程详细解析
2013/08/07 PHP
php获取汉字首字母的函数
2013/11/07 PHP
php实现递归与无限分类的方法
2015/02/16 PHP
php计算指定目录下文件占用空间的方法
2015/03/13 PHP
PHP实现全角字符转为半角方法汇总
2015/07/09 PHP
修复ShopNC使用QQ 互联时提示100010 错误
2015/11/08 PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
2016/03/29 PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
2018/05/24 PHP
简单实用的PHP文本缓存类实例
2019/03/22 PHP
Mootools 1.2教程(21)——类(二)
2009/09/15 Javascript
jQuery删除一个元素后淡出效果展示删除过程的方法
2015/03/18 Javascript
JavaScript中常见的字符串操作函数及用法汇总
2015/05/04 Javascript
js实现浮动在网页右侧的简洁QQ在线客服代码
2015/09/04 Javascript
NodeJS创建基础应用并应用模板引擎
2016/04/12 NodeJs
js编写当天简单日历效果【实现代码】
2016/05/03 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
2016/06/22 Javascript
利用js查找数组中指定元素并返回该元素的所有索引示例
2017/03/29 Javascript
React操作真实DOM实现动态吸底部的示例
2017/10/23 Javascript
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
2018/04/27 Javascript
微信小程序获取用户openid的实现
2018/12/24 Javascript
js实现翻牌小游戏
2020/07/31 Javascript
Vue循环中多个input绑定指定v-model实例
2020/08/31 Javascript
vue 如何使用递归组件
2020/10/23 Javascript
[02:26]2016国际邀请赛8月3日开战 中国军团出征西雅图
2016/08/02 DOTA
[01:03:27]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python迭代器与生成器用法实例分析
2018/07/09 Python
python环形单链表的约瑟夫问题详解
2018/09/27 Python
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
2019/05/21 Python
Flask框架搭建虚拟环境的步骤分析
2019/12/21 Python
关于webview适配H5上传照片或者视频文件的方法
2020/11/04 HTML / CSS
员工入职担保书范文
2014/04/01 职场文书
公司委托书范本
2014/04/04 职场文书
医院科室评语
2015/01/04 职场文书
《这片土地是神圣的》教学反思
2016/02/16 职场文书
Windows下使用Nginx+Tomcat做负载均衡的完整步骤
2021/03/31 Servers