原生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网页制作特殊效果用随机数
May 22 Javascript
javascript实现的距离现在多长时间后的一个格式化的日期
Oct 29 Javascript
jQuery调用WebService的实现代码
Jun 19 Javascript
使用jquery实现简单的ajax
Jul 08 Javascript
js类式继承的具体实现方法
Dec 31 Javascript
jQuery获取和设置表单元素的方法
Feb 14 Javascript
Node.js模拟浏览器文件上传示例
Mar 26 Javascript
javascript清空table表格的方法
May 14 Javascript
彻底解决 webpack 打包文件体积过大问题
Jul 07 Javascript
mongoose设置unique不生效问题的解决及如何移除unique的限制
Nov 07 Javascript
vue跳转页面的几种方法(推荐)
Mar 26 Javascript
Javascript文本框脚本实现方法解析
Oct 30 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 Ajax JavaScript Json获取天气信息实现代码
2016/08/17 PHP
解决iframe的frameborder在chrome/ff/ie下的差异
2010/08/12 Javascript
jquery 操作DOM的基本用法分享
2012/04/05 Javascript
JavaScript实现表格排序方法
2013/06/14 Javascript
js判断字符长度以及中英文数字等
2013/12/31 Javascript
jQuery提示效果代码分享
2014/11/20 Javascript
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
BootStrap实现树形目录组件代码详解
2016/06/21 Javascript
真正好用的js验证上传文件大小的简单方法
2016/10/27 Javascript
dts文件中删除一个node或属性的操作方法
2018/08/05 Javascript
说说Vuex的getters属性的具体用法
2019/04/15 Javascript
atom-design(Vue.js移动端组件库)手势组件使用教程
2019/05/16 Javascript
详解vuex之store源码简单解析
2019/06/13 Javascript
JS写滑稽笑脸运动效果
2020/05/28 Javascript
菜鸟使用python实现正则检测密码合法性
2016/01/05 Python
python爬取NUS-WIDE数据库图片
2016/10/05 Python
利用Python如何批量更新服务器文件
2018/07/29 Python
python统计中文字符数量的两种方法
2019/01/31 Python
使用Python将Mysql的查询数据导出到文件的方法
2019/02/25 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
2019/06/19 Python
简单了解python关系(比较)运算符
2019/07/08 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
2020/02/29 Python
利用django model save方法对未更改的字段依然进行了保存
2020/03/28 Python
python文件读取失败怎么处理
2020/06/23 Python
canvas拼图功能实现代码示例
2018/11/21 HTML / CSS
Paradigit比利时电脑卖场:购买笔记本、电脑、平板和外围设备
2016/11/28 全球购物
澳大利亚制造的羊皮靴:Original UGG Boots
2017/11/13 全球购物
马来西亚最大的在线隐形眼镜商店:MrLens
2019/03/27 全球购物
社区志愿者心得体会
2014/01/03 职场文书
办理居住证介绍信
2014/01/15 职场文书
优秀学生获奖感言
2014/02/15 职场文书
小学二年级学生评语
2014/04/21 职场文书
机电一体化专业毕业生自荐信
2014/06/19 职场文书
工作表扬信
2015/01/17 职场文书
培养联系人考察意见
2015/06/01 职场文书
你对自己的信用报告有过了解吗?
2019/07/09 职场文书