原生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 相关文章推荐
获取页面高度,窗口高度,滚动条高度等参数值getPageSize,getPageScroll
Sep 22 Javascript
硬盘浏览程序,保存成网页格式便可使用
Dec 03 Javascript
js url传值中文乱码之解决之道
Nov 20 Javascript
jquery 常用操作方法
Jan 28 Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
Aug 23 Javascript
jQuery插件autocomplete使用详解
Feb 04 Javascript
js实现简单的二级联动效果
Mar 09 Javascript
JavaScript切换搜索引擎的导航网页搜索框实例代码
Jun 11 Javascript
ZeroClipboard.js使用一个flash复制多个文本框
Jun 19 Javascript
浅谈Vue-cli单文件组件引入less,sass,css样式的不同方法
Mar 13 Javascript
JavaScript设计模式之代理模式实例分析
Jan 16 Javascript
快速了解Vue父子组件传值以及父调子方法、子调父方法
Jul 15 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防止sql注入之过滤分页参数实例
2014/11/03 PHP
php 5.6版本中编写一个PHP扩展的简单示例
2015/01/20 PHP
详解WordPress开发中get_header()获取头部函数的用法
2016/01/08 PHP
PHP中调用C/C++制作的动态链接库的教程
2016/03/10 PHP
ThinkPHP中session函数详解
2016/09/14 PHP
PHP读取word文档的方法分析【基于COM组件】
2017/08/01 PHP
JS小功能(onmouseover实现选择月份)实例代码
2013/11/28 Javascript
jQuery AjaxUpload 上传图片代码
2016/02/02 Javascript
解析AngularJS中get请求URL出现的跨域问题
2016/12/01 Javascript
Auto.js自动收取自己和好友蚂蚁森林能量脚本
2018/06/28 Javascript
对angularJs中2种自定义服务的实例讲解
2018/09/30 Javascript
JavaScript闭包与作用域链实例分析
2019/01/21 Javascript
react实现移动端下拉菜单的示例代码
2020/01/16 Javascript
vue 实现element-ui中的加载中状态
2020/11/11 Javascript
[44:21]Ti4 循环赛第四日 附加赛NEWBEE vs LGD
2014/07/13 DOTA
[01:58]2018DOTA2亚洲邀请赛趣味视频——交流
2018/04/03 DOTA
[01:12:53]完美世界DOTA2联赛PWL S2 Forest vs SZ 第一场 11.25
2020/11/26 DOTA
Python入门篇之面向对象
2014/10/20 Python
python编程之requests在网络请求中添加cookies参数方法详解
2017/10/25 Python
Python HTML解析模块HTMLParser用法分析【爬虫工具】
2019/04/05 Python
python计算导数并绘图的实例
2020/02/29 Python
pandas创建DataFrame的7种方法小结
2020/06/14 Python
python是怎么被发明的
2020/06/15 Python
基于python实现删除指定文件类型
2020/07/21 Python
localStorage、sessionStorage使用总结
2017/11/17 HTML / CSS
New Balance澳大利亚官网:运动鞋和健身服装
2019/02/23 全球购物
Myprotein比利时官方网站:欧洲第一运动营养品牌
2020/10/04 全球购物
毕业生物理教师求职信
2013/10/17 职场文书
家长评语大全
2014/01/22 职场文书
就业意向书范文
2014/04/01 职场文书
校园安全演讲稿
2014/05/09 职场文书
大学生学雷锋活动总结
2014/06/26 职场文书
民主评议党员总结
2014/10/20 职场文书
2015年校长新年寄语
2014/12/08 职场文书
祝寿主持词
2015/07/02 职场文书
2019开业庆典剪彩仪式主持词!
2019/07/22 职场文书