原生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 相关文章推荐
关于window.pageYOffset和document.documentElement.scrollTop
Apr 05 Javascript
Javascript delete 引用类型对象
Nov 01 Javascript
json的定义、标准格式及json字符串检验
May 11 Javascript
如何减少浏览器的reflow和repaint
Feb 26 Javascript
javascript实现简单的on事件绑定
Aug 23 Javascript
手机端实现Bootstrap简单图片轮播效果
Oct 13 Javascript
BootStrap table使用方法分析
Nov 08 Javascript
JavaScript注入漏洞的原理及防范(详解)
Dec 04 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
Feb 20 Javascript
bootstrap日期插件daterangepicker使用详解
Oct 19 Javascript
详解用webpack的CommonsChunkPlugin提取公共代码的3种方式
Nov 09 Javascript
vue 手机物理监听键+退出提示代码
Sep 09 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
BBS(php &amp; mysql)完整版(二)
2006/10/09 PHP
PHP 等比例缩放图片详解及实例代码
2016/09/18 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
jQuery一步一步实现跨浏览器的可编辑表格,支持IE、Firefox、Safari、Chrome、Opera
2009/08/28 Javascript
AJAX的跨域与JSONP(为文章自动添加短址的功能)
2010/01/17 Javascript
基于jquery的实现简单的表格中增加或删除下一行
2010/08/01 Javascript
jquery里的正则表达式说明
2011/08/03 Javascript
深入理解JavaScript高级之词法作用域和作用域链
2013/12/10 Javascript
jquery 显示*天*时*分*秒实现时间计时器
2014/05/07 Javascript
Jquery实现仿腾讯娱乐频道焦点图(幻灯片)特效
2015/03/06 Javascript
jQuery实现行文字链接提示效果的方法
2015/03/10 Javascript
浅谈js中的延迟执行和定时执行
2016/05/31 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
jQuery实现鼠标响应式淘宝动画效果示例
2018/02/13 jQuery
vue 指令之气泡提示效果的实现代码
2018/10/18 Javascript
微信小程序非swiper组件实现的自定义伪3D轮播图效果示例
2018/12/11 Javascript
详解Vue demo实现商品列表的展示
2019/05/07 Javascript
js实现跟随鼠标移动的小球
2019/08/26 Javascript
微信小程序左滑删除实现代码实例
2019/09/16 Javascript
python中mechanize库的简单使用示例
2014/01/10 Python
Python中的FTP通信模块ftplib的用法整理
2016/07/08 Python
Python实现定时任务
2017/02/08 Python
python pygame实现球球大作战
2019/11/25 Python
Python 面向对象部分知识点小结
2020/03/09 Python
意大利拉斐尔时尚购物网:Raffaello Network(支持中文)
2018/11/09 全球购物
植村秀美国官网:Shu Uemura美国
2019/03/19 全球购物
应届大专毕业生个人自荐信
2013/09/22 职场文书
大一自我鉴定范文
2013/12/27 职场文书
党员公开承诺书和承诺事项
2014/03/25 职场文书
医药销售自荐书
2014/05/29 职场文书
企业形象策划方案
2014/05/29 职场文书
县政府办公室领导班子个人对照检查材料
2014/09/16 职场文书
2015年毕业实习工作总结
2014/12/12 职场文书
创业计划书之蛋糕店
2019/08/29 职场文书
Python requests库参数提交的注意事项总结
2021/03/29 Python
python 开心网和豆瓣日记爬取的小爬虫
2021/05/29 Python