用原生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 相关文章推荐
网页开发中的容易忽略的问题 javascript HTML中的table
Apr 15 Javascript
关于javascript 回调函数中变量作用域的讨论
Sep 11 Javascript
js replace正则表达式应用案例讲解
Jan 17 Javascript
JavaScript转换农历类实现及调用方法
Jan 27 Javascript
js选项卡的实现方法
Feb 09 Javascript
jquery实现可横向和竖向展开的动态下滑菜单效果
Aug 24 Javascript
JavaScript设计模式初探
Jan 07 Javascript
AngularJS 与百度地图的结合实例
Oct 20 Javascript
Bootstrap基本组件学习笔记之导航(10)
Dec 07 Javascript
JavaScript实现带有子菜单和控件的slider轮播图效果
Nov 01 Javascript
AngularJS 将再发布一个重要版本 然后进入长期支持阶段
Jan 31 Javascript
微信小程序wx.request拦截器使用详解
Jul 09 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
php实现每天自动变换随机问候语的方法
2015/05/12 PHP
php实现XSS安全过滤的方法
2015/07/29 PHP
基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
2015/12/20 PHP
php封装的mysqli类完整实例
2016/10/18 PHP
PHP的mysqli_stmt_init()函数讲解
2019/01/24 PHP
JavaScript的Cookies
2008/01/16 Javascript
如何使用Javascript获取距今n天前的日期
2013/07/08 Javascript
jquery ajax方式直接提交整个表单核心代码
2013/08/15 Javascript
js和php如何获取当前url的内容
2013/09/22 Javascript
AngularJS入门教程(零):引导程序
2014/12/06 Javascript
jQuery仿360导航页图标拖动排序效果代码分享
2015/08/24 Javascript
jQuery实现的登录浮动框效果代码
2015/09/26 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
浅谈JS继承_寄生式继承 & 寄生组合式继承
2016/08/16 Javascript
BOM系列第一篇之定时器setTimeout和setInterval
2016/08/17 Javascript
BootStrap表单验证实例代码
2017/01/13 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
微信小程序图片横向左右滑动案例
2017/05/19 Javascript
解决vue2中使用axios http请求出现的问题
2018/03/05 Javascript
jquery实现动态创建form并提交的方法示例
2019/05/27 jQuery
vue 框架下自定义滚动条(easyscroll)实现方法
2019/08/29 Javascript
VUE 自定义组件模板的方法详解
2019/08/30 Javascript
[02:02]特效爆炸!DOTA2珍宝之瓶待你开启
2018/08/21 DOTA
pyqt4教程之实现windows窗口小示例分享
2014/03/07 Python
Django实现自定义404,500页面教程
2017/03/26 Python
pandas对指定列进行填充的方法
2018/04/11 Python
Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统
2019/09/05 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
2020/01/02 Python
tensorflow 限制显存大小的实现
2020/02/03 Python
selenium WebDriverWait类等待机制的实现
2020/03/18 Python
聪明的粉丝购买门票的地方:TickPick
2018/03/09 全球购物
KIEHL’S科颜氏官方旗舰店:源自美国的顶级护肤品牌
2018/06/07 全球购物
写一个方法1000的阶乘
2012/11/21 面试题
数控技术专科生自我评价
2014/01/08 职场文书
消防安全月活动总结
2015/05/08 职场文书
安全生产奖惩制度
2015/08/06 职场文书