原生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 动态调整图片尺寸实现代码
Dec 28 Javascript
js判断60秒以及倒计时示例代码
Jan 24 Javascript
javascript实现禁止鼠标滚轮事件
Jul 24 Javascript
在Ubuntu系统上安装Node.JS的教程
Oct 15 Javascript
JavaScript函数的调用以及参数传递
Oct 21 Javascript
Backbone中View之间传值的学习心得
Aug 09 Javascript
AngularJS表单基本操作
Jan 09 Javascript
浅析js中mvvm模式实现的原理
Oct 06 Javascript
Jquery和CSS实现选择框重置按钮功能
Nov 08 jQuery
vue组件数据传递、父子组件数据获取,slot,router路由功能示例
Mar 19 Javascript
js中Function引用类型常见有用的方法和属性详解
Dec 11 Javascript
Vue和React有哪些区别
Sep 12 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 冒泡排序 交换排序法
2011/05/10 PHP
php实现rc4加密算法代码
2012/04/25 PHP
php查询whois信息的方法
2015/06/08 PHP
js操作checkbox遇到的问题解决
2013/06/29 Javascript
JavaScript的事件绑定(方便不支持js的时候)
2013/10/01 Javascript
jquery实现的鼠标拖动排序Li或Table
2014/05/04 Javascript
浅谈JavaScript中的string拥有方法的原因
2015/08/28 Javascript
jQuery中的on与bind绑定事件区别实例详解
2017/02/28 Javascript
js实现按钮开关单机下拉菜单效果
2018/11/22 Javascript
小程序分页实践之编写可复用分页组件
2019/07/18 Javascript
nodejs使用socket5进行代理请求的实现
2020/02/21 NodeJs
Javascript中window.name属性详解
2020/11/19 Javascript
跟老齐学Python之有容乃大的list(3)
2014/09/15 Python
Python中decorator使用实例
2015/04/14 Python
Django查找网站项目根目录和对正则表达式的支持
2015/07/15 Python
Python中对元组和列表按条件进行排序的方法示例
2015/11/10 Python
Python多层嵌套list的递归处理方法(推荐)
2016/06/08 Python
Python中文件I/O高效操作处理的技巧分享
2017/02/04 Python
Python对列表中的各项进行关联详解
2017/08/15 Python
python编程测试电脑开启最大线程数实例代码
2018/02/09 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
2018/04/21 Python
Python3.5面向对象编程图文与实例详解
2019/04/24 Python
Python 安装 virturalenv 虚拟环境的教程详解
2020/02/21 Python
python实现文件+参数发送request的实例代码
2021/01/05 Python
html5 canvas fillRect坐标和大小的问题解决方法
2014/03/26 HTML / CSS
使用canvas绘制贝塞尔曲线
2014/12/17 HTML / CSS
匡威西班牙官网:Converse西班牙
2019/10/01 全球购物
重写子类方法时,抛出异常的书写注意事项
2015/10/17 面试题
关于环保的标语
2014/06/13 职场文书
文明单位创建材料
2014/12/24 职场文书
婚前保证书范文
2015/02/28 职场文书
2015年大学迎新工作总结
2015/07/16 职场文书
运动会班级前导词
2015/07/20 职场文书
python-for x in range的用法(注意要点、细节)
2021/05/10 Python
详解MySQL 联合查询优化机制
2021/05/10 MySQL
JavaScript实现外溢动态爱心的效果的示例代码
2022/03/21 Javascript