用原生JS对AJAX做简单封装的实例代码


Posted in Javascript onJuly 13, 2016

首先,我们需要xhr对象。这对我们来说不难,封装成一个函数。

var createAjax = function() { var xhr = null; try { //IE系列浏览器 xhr = new ActiveXObject("microsoft.xmlhttp");
  } catch (e1) { try { //非IE浏览器 xhr = new XMLHttpRequest();
    } catch (e2) { window.alert("您的浏览器不支持ajax,请更换!");
    }
  } return xhr;
};

然后,我们来写核心函数。

var ajax = function(conf) { // 初始化 //type参数,可选 var type = conf.type; //url参数,必填 var url = conf.url; //data参数可选,只有在post请求时需要 var data = conf.data; //datatype参数可选 var dataType = conf.dataType; //回调函数可选 var success = conf.success; if (type == null){ //type参数可选,默认为get type = "get";
  } if (dataType == null){ //dataType参数可选,默认为text dataType = "text";
  } // 创建ajax引擎对象 var xhr = createAjax(); // 打开 xhr.open(type, url, true); // 发送 if (type == "GET" || type == "get") {
    xhr.send(null);
  } else if (type == "POST" || type == "post") {
    xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded");
    xhr.send(data);
  }
  xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { if(dataType == "text"||dataType=="TEXT") { if (success != null){ //普通文本 success(xhr.responseText);
        }
      }else if(dataType=="xml"||dataType=="XML") { if (success != null){ //接收xml文档 success(xhr.responseXML);
        } 
      }else if(dataType=="json"||dataType=="JSON") { if (success != null){ //将json字符串转换为js对象 success(eval("("+xhr.responseText+")"));
        }
      }
    }
  };
};

最后,说明一下此函数的用法。

ajax({ type:"post",
    url:"test.jsp",
    data:"name=dipoo&info=good",
    dataType:"json",
    success:function(data){ alert(data.name); } });

以上这篇用原生JS对AJAX做简单封装的实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
获取客户端电脑日期时间js代码(jquery)
Sep 12 Javascript
取消选中单选框radio的三种方式示例介绍
Dec 23 Javascript
JavaScript Function函数类型介绍
Apr 08 Javascript
JS框架之vue.js(深入三:组件1)
Sep 29 Javascript
微信小程序 ecshop地址三级联动实现实例代码
Feb 28 Javascript
JavaScript new对象的四个过程实例浅析
Jul 31 Javascript
element-ui表格列金额显示两位小数的方法
Aug 24 Javascript
解决layer图标icon不加载的问题
Sep 04 Javascript
Vue 实现输入框新增搜索历史记录功能
Oct 15 Javascript
JavaScript观察者模式原理与用法实例详解
Mar 10 Javascript
jquery实现进度条状态展示
Mar 26 jQuery
vue+swiper实现左右滑动的测试题功能
Oct 30 Javascript
javascript类型系统——undefined和null全面了解
Jul 13 #Javascript
javascript类型系统——日期Date对象全面了解
Jul 13 #Javascript
浅谈javascript中关于日期和时间的基础知识
Jul 13 #Javascript
jQuery EasyUI菜单与按钮详解
Jul 13 #Javascript
JQuery对ASP.NET MVC数据进行更新删除
Jul 13 #Javascript
Javascript表单特效之十大常用原理性样例代码大总结
Jul 12 #Javascript
Bootstrap登陆注册页面开发教程
Jul 12 #Javascript
You might like
Yii2创建表单(ActiveForm)方法详解
2016/07/23 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
PDO::_construct讲解
2019/01/27 PHP
php数组函数array_push()、array_pop()及array_shift()简单用法示例
2020/01/26 PHP
accesskey 提交
2006/06/26 Javascript
JavaScript 变量命名规则
2009/09/23 Javascript
javascript 清空form表单中某种元素的值
2009/12/26 Javascript
jQuery.each()用法分享
2012/07/31 Javascript
window.open的页面如何刷新(父页面)上层页面
2012/12/28 Javascript
jQuery动态设置form表单的enctype值(实现代码)
2013/07/04 Javascript
简单实用的反馈表单无刷新提交带验证
2013/11/15 Javascript
js实现透明度渐变效果的方法
2015/04/10 Javascript
Javascript控制div属性动态变化实例分析
2015/10/08 Javascript
jQuery form 表单验证插件(fieldValue)校验表单
2016/01/24 Javascript
JavaScript基础教程——入门必看篇
2016/05/20 Javascript
利用jQuery实现打字机字幕效果实例代码
2016/09/02 Javascript
KnockoutJS 3.X API 第四章之数据控制流foreach绑定
2016/10/10 Javascript
详细讲解vue2+vuex+axios
2017/05/27 Javascript
Node.js如何实现注册邮箱激活功能 (常见)
2017/07/23 Javascript
iview给radio按钮组件加点击事件的实例
2017/09/30 Javascript
node.js中路由,中间件,ge请求和post请求的参数详解
2017/12/26 Javascript
浅谈React高阶组件
2018/03/28 Javascript
详解ES6 export default 和 import语句中的解构赋值
2019/05/28 Javascript
[00:35]DOTA2上海特级锦标赛 VP战队宣传片
2016/03/04 DOTA
[01:43]深扒TI7聊天轮盘语音出处4
2017/05/11 DOTA
使用wxpython实现的一个简单图片浏览器实例
2014/07/10 Python
pandas.DataFrame选取/排除特定行的方法
2018/07/03 Python
python代码实现逻辑回归logistic原理
2019/08/07 Python
用Python实现二叉树、二叉树非递归遍历及绘制的例子
2019/08/09 Python
CSS3实现银灰色动画效果的导航菜单代码
2015/09/01 HTML / CSS
集团薪酬管理制度
2014/01/13 职场文书
小学敬老月活动方案
2014/02/11 职场文书
求职面试个人自我评价
2014/02/28 职场文书
2016年“抗战胜利纪念日”71周年校园广播稿
2015/12/18 职场文书
Golang并发操作中常见的读写锁详析
2021/08/30 Golang
国际最新研究在陨石中发现DNA主要成分 或由陨石带来地球
2022/04/29 数码科技