原生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 相关文章推荐
优化网页之快速的呈现我们的网页
Jun 29 Javascript
Asp.net下使用Jquery Ajax传送和接收DataTable的代码
Sep 12 Javascript
javascript hashtable 修正版 下载
Dec 30 Javascript
js的回调函数详解
Jan 05 Javascript
解决js图片加载时出现404的问题
Nov 30 Javascript
AngularJS基础 ng-include 指令示例讲解
Aug 01 Javascript
微信小程序 引用其他js文件实现代码
Feb 22 Javascript
jQuery实现基本隐藏与显示效果的方法详解
Sep 05 jQuery
JavaScript HTML DOM元素 节点操作汇总
Jul 29 Javascript
关于layui 实现点击按钮添加一行(方法渲染创建的table)
Sep 29 Javascript
基于ant design日期控件使用_仅月份的操作
Oct 27 Javascript
JavaScript实现网页tab栏效果制作
Nov 20 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 allow_url_include的应用和解释
2010/04/22 PHP
php检测网页是否被百度收录的函数代码
2013/10/09 PHP
初识PHP
2014/09/28 PHP
PHP+Ajax实现验证码的实时验证
2016/07/20 PHP
详解php中curl返回false的解决办法
2019/03/18 PHP
php实现JWT(json web token)鉴权实例详解
2019/11/05 PHP
Javascript MD4
2006/12/20 Javascript
查询绑定数据岛的表格中的文本并修改显示方式的js代码
2009/12/15 Javascript
javascript 鼠标悬浮图片显示原图 移出鼠标后原图消失(多图)
2009/12/28 Javascript
原生js 秒表实现代码
2012/07/24 Javascript
JQuery给元素添加/删除节点比如select
2013/04/02 Javascript
JS获取下拉框显示值和判断单选按钮的方法
2015/07/09 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
js面向对象实现canvas制作彩虹球喷枪效果
2016/09/24 Javascript
AngularJS中的缓存使用
2017/01/11 Javascript
JS原型与原型链的深入理解
2017/02/15 Javascript
使用typescript开发angular模块并发布npm包
2018/04/19 Javascript
浅谈vue引用静态资源需要注意的事项
2018/09/28 Javascript
[55:42]VG vs VGJ.T 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
[01:05:29]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第二场 1月24日
2021/03/11 DOTA
python 统计代码行数简单实例
2017/05/04 Python
python3爬取数据至mysql的方法
2018/06/26 Python
Django 路由控制的实现代码
2018/11/08 Python
Python list运算操作代码实例解析
2020/01/20 Python
Python 高效编程技巧分享
2020/09/10 Python
Pretty Little Thing爱尔兰:时尚女性服饰
2017/03/27 全球购物
Lookfantastic法国官网:英国知名美妆购物网站
2017/10/28 全球购物
公务员综合考察材料
2014/02/01 职场文书
机械设计及其自动化专业求职信
2014/06/09 职场文书
建筑学专业自荐书
2014/07/09 职场文书
员工自我工作评价
2015/03/06 职场文书
保研专家推荐信范文
2015/03/25 职场文书
乡镇保密工作承诺书
2015/05/04 职场文书
婚育证明格式
2015/06/17 职场文书
2019年思想汇报
2019/06/20 职场文书
MySQL选择合适的备份策略和备份工具
2022/06/01 MySQL