用原生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 constructor的实际作用分析
Nov 15 Javascript
jquery实现上下左右滑动的方法
Feb 09 Javascript
JavaScript Sort 的一个错误用法示例
Mar 20 Javascript
JavaScript多线程详解
Aug 12 Javascript
详解JavaScript对Date对象的操作问题(生成一个倒数7天的数组)
Oct 01 Javascript
JavaScript观察者模式(经典)
Dec 09 Javascript
使用JS代码实现俄罗斯方块游戏
Aug 03 Javascript
从vue源码看props的用法
Jan 09 Javascript
jQuery中实现text()的方法
Apr 04 jQuery
解决LayUI数据表格复选框不居中显示的问题
Sep 25 Javascript
js实现坦克移动小游戏
Oct 28 Javascript
elementui的el-popover修改样式不生效的解决
Jun 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
在Windows中安装Apache2和PHP4的权威指南
2006/10/09 PHP
PHP数组对比函数,存在交集则返回真,否则返回假
2011/02/03 PHP
php 字符串中是否包含指定字符串的多种方法
2018/04/12 PHP
表单JS弹出填写提示效果代码
2011/04/16 Javascript
学习javascript,实现插入排序实现代码
2011/07/31 Javascript
js constructor的实际作用分析
2011/11/15 Javascript
在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)
2011/12/20 Javascript
JQuery鼠标移到小图显示大图效果的方法
2015/06/10 Javascript
JavaScript制作淘宝星级评分效果的思路
2020/06/23 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
2016/11/02 Javascript
BootStrap fileinput.js文件上传组件实例代码
2017/02/20 Javascript
收藏AngularJS中最重要的核心功能
2017/07/09 Javascript
JavaScript文件的同步和异步加载的实现代码
2017/08/19 Javascript
最新Javascript程序员面试试题和解题方法
2017/11/23 Javascript
jQuery开发仿QQ版音乐播放器
2020/07/10 jQuery
[03:39]2015国际邀请赛主赛事首日精彩回顾
2015/08/05 DOTA
python通过pil模块将raw图片转换成png图片的方法
2015/03/16 Python
Python处理PDF及生成多层PDF实例代码
2017/04/24 Python
基于Python os模块常用命令介绍
2017/11/03 Python
使用python和pygame绘制繁花曲线的方法
2018/02/24 Python
python使用udp实现聊天器功能
2018/12/10 Python
Python实现捕获异常发生的文件和具体行数
2020/04/25 Python
如何使用Pytorch搭建模型
2020/10/26 Python
HTML5 Canvas阴影使用方法实例演示
2013/08/02 HTML / CSS
Spongelle官网:美国的创意护肤洗护品牌
2019/05/15 全球购物
世界上最好的野生海鲜和有机食品:Vital Choice
2020/01/16 全球购物
小区消防演习方案
2014/02/21 职场文书
教师工作自我鉴定范文
2014/09/14 职场文书
超市开店计划书
2014/09/15 职场文书
2014年党的群众路线教育实践活动整改措施(个人版)
2014/09/25 职场文书
幼儿园2015年度工作总结
2015/04/01 职场文书
大学生读书笔记范文
2015/07/01 职场文书
浅谈pytorch中的dropout的概率p
2021/05/27 Python
SpringMVC 整合SSM框架详解
2021/08/30 Java/Android
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸
windows安装 redis 6.2.6最新步骤详解
2022/04/26 Redis