用原生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 Function对象扩展之延时执行函数
Jul 06 Javascript
删除select中所有option选项jquery代码
Aug 12 Javascript
jquery实现简单手风琴菜单效果实例
Jun 13 Javascript
JavaScript实现删除,移动和复制文件的方法
Aug 05 Javascript
json实现添加、遍历与删除属性的方法
Jun 17 Javascript
jQuery插件简单学习实例教程
Jul 01 Javascript
vue watch自动检测数据变化实时渲染的方法
Jan 16 Javascript
vue配置多页面的实现方法
May 22 Javascript
JavaScript使用prototype原型实现的封装继承多态示例
Aug 31 Javascript
vue实现简单的日历效果
Sep 24 Javascript
Vue自定义组件双向绑定实现原理及方法详解
Sep 03 Javascript
vue.js 使用原生js实现轮播图
Apr 26 Vue.js
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+AJAX实现无刷新注册(带用户名实时检测)
2006/12/02 PHP
PHP使用range协议实现输出文件断点续传代码实例
2014/07/04 PHP
PHP基本语法总结
2014/09/06 PHP
PHP多线程类及用法实例
2014/12/03 PHP
weiphp微信公众平台授权设置
2016/01/04 PHP
php加密解密字符串示例
2016/10/13 PHP
event.keyCode键码值表 附只能输入特定的字符串代码
2009/05/15 Javascript
Jquery替换已存在于element上的event的方法
2010/03/09 Javascript
JS.getTextContent(element,preformatted)使用介绍
2013/09/21 Javascript
自己动手实现jQuery Callbacks完整功能代码详解
2013/11/25 Javascript
JS获取随机数和时间转换的简单实例
2016/07/10 Javascript
详解Angular CLI + Electron 开发环境搭建
2017/07/20 Javascript
JavaScript使用atan2来绘制箭头和曲线的实例
2017/09/14 Javascript
jQuery实现的手动拖动控制进度条效果示例【测试可用】
2018/04/18 jQuery
JS实现十分钟倒计时代码实例
2018/10/18 Javascript
JavaScript数组特性与实践应用深入详解
2018/12/30 Javascript
小程序从手动埋点到自动埋点的实现方法
2019/01/24 Javascript
js实现继承的方法及优缺点总结
2019/05/08 Javascript
vue点击按钮实现简单页面的切换
2020/09/08 Javascript
[58:35]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
Python MySQLdb模块连接操作mysql数据库实例
2015/04/08 Python
基于python的Paxos算法实现
2019/07/03 Python
Python爬取腾讯视频评论的思路详解
2019/12/19 Python
Python Numpy 控制台完全输出ndarray的实现
2020/02/19 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
2020/02/24 Python
PageFactory设计模式基于python实现
2020/04/14 Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
2020/04/21 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
2020/07/02 Python
python爬虫使用正则爬取网站的实现
2020/08/03 Python
英国在线药房和在线医生:LloydsPharmacy
2019/10/21 全球购物
Moss Bros官网:英国排名第一的西装店
2020/02/26 全球购物
运输服务质量承诺书
2014/03/27 职场文书
指导教师评语
2014/04/26 职场文书
汤姆索亚历险记读书笔记
2015/06/29 职场文书
2019年家电促销广告语集锦
2019/10/21 职场文书
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
2021/04/27 Python