原生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 相关文章推荐
jquery text,radio,checkbox,select操作实现代码
Jul 09 Javascript
JavaScript Event学习第十章 一些可替换的事件对
Feb 10 Javascript
Jquery Ajax学习实例4 向WebService发出请求,返回实体对象的异步调用
Mar 16 Javascript
jquery链式操作的正确使用方法
Jan 06 Javascript
JavaScript中的Web worker多线程API研究
Dec 06 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
Dec 13 Javascript
js实现一个猜数字游戏
Mar 31 Javascript
解决vue的变量在settimeout内部效果失效的问题
Aug 30 Javascript
vue router 源码概览案例分析
Oct 09 Javascript
JavaScript实现学生在线做题计时器功能
Dec 05 Javascript
浅谈express.js框架中间件(middleware)
Apr 07 Javascript
详解ES6 中的Object.assign()的用法实例代码
Jan 11 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
星际争霸 Starcraft 游戏介绍
2020/03/14 星际争霸
PHP数组内存利用率低和弱类型详细解读
2017/08/10 PHP
PHP操作Redis常用技巧总结
2018/04/24 PHP
PHP实现简单日历类编写
2020/08/28 PHP
jQuery 渐变下拉菜单
2009/12/15 Javascript
使用javascript获取flash加载的百分比的实现代码
2011/05/25 Javascript
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
2012/06/18 Javascript
JavaScript的arguments对象应用示例
2014/09/15 Javascript
JavaScript之数组(Array)详解
2015/04/01 Javascript
解决jquery插件:TypeError:$.browser is undefined报错的方法
2015/11/21 Javascript
Bootstrap项目实战之子栏目资讯内容
2016/04/25 Javascript
通过Ajax使用FormData对象无刷新上传文件方法
2016/12/08 Javascript
Javascript中的async awai的用法
2017/05/17 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
2017/06/08 Javascript
浅谈vue的iview列表table render函数设置DOM属性值的方法
2017/09/30 Javascript
浅谈webpack打包之后的文件过大的解决方法
2018/03/07 Javascript
vueScroll实现移动端下拉刷新、上拉加载
2019/03/22 Javascript
layuiAdmin循环遍历展示商品图片列表的方法
2019/09/16 Javascript
AI小程序之语音听写来了,十分钟掌握百度大脑语音听写全攻略
2020/03/13 Javascript
vue 防止页面加载时看到花括号的解决操作
2020/11/09 Javascript
微信小程序自定义支持图片的弹窗
2020/12/21 Javascript
[04:09]2014DOTA2国际邀请赛Ti西雅图 历届冠军相继出局 BBC综述今日比赛
2014/07/20 DOTA
django 发送邮件和缓存的实现代码
2018/07/18 Python
树莓派实现移动拍照
2019/06/22 Python
python自带tkinter库实现棋盘覆盖图形界面
2019/07/17 Python
五个2015 年最佳HTML5 框架
2015/11/11 HTML / CSS
德国内衣、泳装和睡衣网上商店:Bigsize Dessous
2018/07/09 全球购物
重新定义牛仔布,100美元以下:Warp + Weft
2018/07/25 全球购物
应用数学自荐书范文
2013/11/24 职场文书
幼儿园教育教学反思
2014/01/31 职场文书
《桂林山水》教学反思
2014/02/08 职场文书
房地产活动策划方案
2014/05/14 职场文书
车间质检员岗位职责
2015/04/08 职场文书
乡镇科协工作总结2015
2015/05/19 职场文书
新郎新娘致辞
2015/07/31 职场文书
Android自定义ScrollView实现阻尼回弹
2022/04/01 Java/Android