原生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 相关文章推荐
脚本吧 - 幻宇工作室用到js,超强推荐expand.js
Dec 23 Javascript
jQuery选择器的工作原理和优化分析
Jul 25 Javascript
写得不错的jquery table鼠标经过变色代码
Sep 27 Javascript
JS简单模拟触发按钮点击功能的方法
Nov 30 Javascript
js实现商城星星评分的效果
Dec 29 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
Oct 05 Javascript
KnockoutJS 3.X API 第四章之数据控制流with绑定
Oct 10 Javascript
Ubuntu 16.04 64位中搭建Node.js开发环境教程
Oct 19 Javascript
JQueryMiniUI按照时间进行查询的实现方法
Jun 07 jQuery
vue移动端屏幕适配详解
Apr 30 Javascript
layui use 定义js外部引用函数的方法
Sep 26 Javascript
微信小程序获取复选框全选反选选中的值(实例代码)
Dec 17 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
萌王史莱姆”萌王性别尴尬!那“萌战”归女组还是男?
2018/12/17 日漫
php缓冲输出实例分析
2015/01/05 PHP
php动态添加url查询参数的方法
2015/04/14 PHP
Yii2第三方类库插件Imagine的安装和使用
2017/07/06 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
jQuery 白痴级入门教程
2009/11/11 Javascript
在次封装easyui-Dialog插件实现代码
2010/11/14 Javascript
Javascript处理DOM元素事件实现代码
2012/05/23 Javascript
open 动态修改img的onclick事件示例代码
2013/11/13 Javascript
jquery datepicker参数介绍和示例
2014/04/15 Javascript
jquery制作漂亮的弹出层提示消息特效
2014/12/23 Javascript
jQuery 3.0 的 setter和getter 模式详解
2016/07/11 Javascript
vue解决弹出蒙层滑动穿透问题的方法
2018/09/22 Javascript
基于javascript实现贪吃蛇经典小游戏
2020/04/10 Javascript
[01:12]DOTA2次级职业联赛 - Newbee.Y 战队宣传片
2014/12/01 DOTA
[00:35]DOTA2上海特级锦标赛 MVP.Phx战队宣传片
2016/03/04 DOTA
[02:49]DAC2018决赛日TOP5 LGD开启黑暗之门绝杀VP
2018/04/08 DOTA
Python设计实现的计算器功能完整实例
2017/08/18 Python
django解决跨域请求的问题
2018/11/11 Python
python实现flappy bird游戏
2018/12/24 Python
python实现维吉尼亚算法
2019/03/20 Python
Python 读取用户指令和格式化打印实现解析
2019/09/02 Python
windows python3安装Jupyter Notebooks教程
2020/04/13 Python
QML实现钟表效果
2020/06/02 Python
基于Tensorflow读取MNIST数据集时网络超时的解决方式
2020/06/22 Python
Python 实现进度条的六种方式
2021/01/06 Python
英国知名奢侈品包包品牌:Milli Millu
2016/12/22 全球购物
雅诗兰黛澳大利亚官网:Estée Lauder澳大利亚
2019/05/31 全球购物
美国职棒大联盟的官方手套、球和头盔:Rawlings
2020/02/15 全球购物
3.15国际消费者权益日主题活动活动总结
2014/03/16 职场文书
幼儿园中班开学寄语
2014/04/03 职场文书
热爱劳动主题班会
2015/08/14 职场文书
中学生打架《检讨书》范文
2019/08/12 职场文书
深入理解以DEBUG方式线程的底层运行原理
2021/06/21 Java/Android
MySQL 字符集 character
2022/05/04 MySQL
微前端qiankun改造日渐庞大的项目教程
2022/06/21 Javascript