原生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类库的顶层对象名用户体验分析
Oct 24 Javascript
基于jQuery实现的水平和垂直居中的div窗口
Aug 08 Javascript
jQuery 拖动层(在可视区域范围内)
May 24 Javascript
JavaScript实现找出数组中最长的连续数字序列
Sep 03 Javascript
JQuery中Text方法用法实例分析
May 18 Javascript
JavaScript事件委托实例分析
May 26 Javascript
浅谈jquery中的each方法$.each、this.each、$.fn.each
Jun 23 Javascript
JS简单设置下拉选择框默认值的方法
Aug 20 Javascript
angular2倒计时组件使用详解
Jan 12 Javascript
javascript 秒表计时器实现代码
Mar 09 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
Dec 20 jQuery
原生JS实现萤火虫效果
Mar 07 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入门小知识
2008/03/24 PHP
几道坑人的PHP面试题 试试看看你会不会也中招
2014/08/19 PHP
PHP中的一些常用函数收集
2015/05/26 PHP
php在linux环境中如何使用redis详解
2020/12/15 PHP
jquery.boxy插件的iframe扩展代码
2010/07/02 Javascript
JavaScript新窗口与子窗口传值详解
2014/02/11 Javascript
JS完整获取IE浏览器信息包括类型、版本、语言等等
2014/05/22 Javascript
ie 7/8不支持trim的属性的解决方案
2014/05/23 Javascript
JavaScript中对象介绍
2014/12/31 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
2015/05/16 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
Angularjs的键盘事件的绑定
2017/07/27 Javascript
jQuery EasyUI开发技巧总结
2017/09/26 jQuery
Vue项目使用CDN优化首屏加载问题
2018/04/01 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
Vue如何实现响应式系统
2018/07/11 Javascript
element vue Array数组和Map对象的添加与删除操作
2018/11/14 Javascript
javascript随机变色实例代码
2019/10/15 Javascript
Python基于回溯法子集树模板解决选排问题示例
2017/09/07 Python
python GUI实现小球满屏乱跑效果
2019/05/09 Python
python3 Scrapy爬虫框架ip代理配置的方法
2020/01/17 Python
基于Django signals 信号作用及用法详解
2020/03/28 Python
Django Admin 上传文件到七牛云的示例代码
2020/06/20 Python
Python 求向量的余弦值操作
2021/03/04 Python
美国一站式电动和手动工具商店:International Tool
2020/11/26 全球购物
Penhaligon’s英国官网:成立于1870年的英国香水制造商
2021/02/18 全球购物
服务行业个人求职的自我评价
2013/12/12 职场文书
如何写一封打动人心的求职信
2014/02/17 职场文书
优秀党员先进事迹材料
2014/12/18 职场文书
2016年清明节网上祭英烈活动总结
2016/04/01 职场文书
《三国志》赏析
2019/08/27 职场文书
2019年手机市场的调研报告2篇
2019/10/10 职场文书
Mysql Show Profile
2021/04/05 MySQL
Python机器学习之底层实现KNN
2021/06/20 Python
winserver2019安装软件一直卡在应用程序正在为首次使用做准备
2022/06/10 Servers
MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决
2022/12/24 MySQL