原生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的对话框详解与参数
Mar 08 Javascript
合并table相同单元格的jquery插件分享(很精简)
Jun 20 Javascript
原生js 秒表实现代码
Jul 24 Javascript
javascript 密码框防止用户粘贴和复制的实现代码
Feb 17 Javascript
jQuery中innerWidth()方法用法实例
Jan 19 Javascript
Yii2使用Bootbox插件实现自定义弹窗
Apr 02 Javascript
JavaScript实现给按钮加上双重动作的方法
Aug 14 Javascript
jQuery选择器及jquery案例详解(必看)
May 20 Javascript
JS非行间样式获取函数的实例代码
Jun 05 Javascript
JavaScript 反射和属性赋值实例解析
Oct 28 Javascript
Vue 数据绑定的原理分析
Nov 16 Javascript
详解微信小程序「渲染层网络层错误」的解决方法
Jan 06 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/06/13 PHP
PHP缓存技术的使用说明
2011/08/06 PHP
PHP类的反射用法实例
2014/11/03 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
2015/03/02 PHP
微信支付开发告警通知实例
2016/07/12 PHP
javascript客户端解决方案 缓存提供程序
2010/07/14 Javascript
Chosen 基于jquery的选择框插件使用方法
2012/05/30 Javascript
js+xml生成级联下拉框代码
2012/07/24 Javascript
如何制作浮动广告 JavaScript制作浮动广告代码
2012/12/30 Javascript
获取下拉列表框的值是数组,split,$.inArray示例
2013/11/13 Javascript
js与jquery获取父级元素,子级元素,兄弟元素的实现方法
2014/01/09 Javascript
Javascript中数组sort和reverse用法分析
2014/12/30 Javascript
基于javascript实现窗口抖动效果
2016/01/03 Javascript
JavaScript知识点总结(六)之JavaScript判断变量数据类型
2016/05/31 Javascript
全面解析Javascript无限添加QQ好友原理
2016/06/15 Javascript
JavaScript Ajax编程 应用篇
2016/07/02 Javascript
JavaScript中数组Array方法详解
2017/02/27 Javascript
详解VUE 数组更新
2017/12/16 Javascript
vue动态路由配置及路由传参的方式
2018/05/23 Javascript
微信小程序实现tab左右切换效果
2020/11/15 Javascript
vue中选项卡点击切换且能滑动切换功能的实现代码
2018/11/25 Javascript
详解Vue中组件传值的多重实现方式
2019/08/16 Javascript
python切换hosts文件代码示例
2013/12/31 Python
python中OrderedDict的使用方法详解
2017/05/05 Python
pytorch中的transforms模块实例详解
2019/12/31 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
英国在线房屋中介网站:Yopa
2018/01/09 全球购物
德国传统玻璃制造商:Cristalica
2018/04/23 全球购物
一套PHP的笔试题
2013/05/31 面试题
什么是规则表达式
2012/05/03 面试题
《天游峰的扫路人》教学反思
2014/04/25 职场文书
护士找工作求职信
2014/07/02 职场文书
2014年语文教研组工作总结
2014/12/06 职场文书
新闻稿件写作范文
2015/07/18 职场文书
python实战之90行代码写个猜数字游戏
2021/04/22 Python
OpenCV-Python实现图像平滑处理操作
2021/06/08 Python