用原生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设置FieldSet展开与收缩
May 15 Javascript
jQuery的cookie插件实现保存用户登陆信息
Apr 15 Javascript
jquery得到iframe src属性值的方法
Sep 25 Javascript
浅谈javascript中replace()方法
Nov 10 Javascript
Javascript的表单验证长度
Mar 16 Javascript
前端js文件合并的三种方式推荐
May 19 Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
Jun 26 Javascript
Javascript中的对象和原型(二)
Aug 12 Javascript
Vue.js实现分页查询功能
Nov 15 Javascript
关于Vue项目跨平台运行问题的解决方法
Sep 18 Javascript
react同构实践之实现自己的同构模板
Mar 13 Javascript
微信小程序云开发详细教程
May 16 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 Squid中可缓存的动态网页设计
2008/09/17 PHP
smarty模板引擎中自定义函数的方法
2015/01/22 PHP
php实现阿拉伯数字和罗马数字相互转换的方法
2015/04/17 PHP
php中array_column函数简单实现方法
2016/07/11 PHP
php json_encode与json_decode详解及实例
2016/12/13 PHP
php二维码生成以及下载实现
2017/09/28 PHP
使用PHPExcel导出Excel表
2018/09/08 PHP
javascript 多种搜索引擎集成的页面实现代码
2010/01/02 Javascript
检测jQuery.js是否已加载的判断代码
2011/05/20 Javascript
改进版通过Json对象实现深复制的方法
2012/10/24 Javascript
js 点击页面其他地方关闭弹出层(示例代码)
2013/12/24 Javascript
JS中类或对象的定义说明
2014/03/10 Javascript
jQuery实现鼠标经过图片变亮其他变暗效果
2015/05/08 Javascript
jQuery实现表格与ckeckbox的全选与单选功能
2016/11/24 Javascript
JS移动端/H5同时选择多张图片上传并使用canvas压缩图片
2017/06/20 Javascript
js 获取元素的具体样式信息getcss(实例讲解)
2017/07/05 Javascript
微信小程序实现手势图案锁屏功能
2018/01/30 Javascript
webpack配置打包后图片路径出错的解决
2018/04/26 Javascript
vue实现移动端省市区选择
2019/09/27 Javascript
[01:10:58]KG vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python使用多线程不断刷新网页的方法
2015/03/31 Python
使用numpy和PIL进行简单的图像处理方法
2018/07/02 Python
用Python将mysql数据导出成json的方法
2018/08/21 Python
Python 实现使用空值进行赋值 None
2020/03/12 Python
HTML5 声明兼容IE的写法
2011/05/16 HTML / CSS
Foreo国际站:Foreo International
2018/10/29 全球购物
英国钻石公司:British Diamond Company
2020/02/16 全球购物
类如何去实现接口
2013/12/19 面试题
css animation配合SVG制作能量流动效果
2021/03/24 HTML / CSS
大型营销活动计划书
2014/04/28 职场文书
高中教师考核方案
2014/05/18 职场文书
医院反腐倡廉演讲稿
2014/09/16 职场文书
群众路线教育实践活动思想汇报(2014特荐篇)
2014/09/16 职场文书
党员个人剖析材料
2014/09/30 职场文书
团党委领导干部党的群众路线教育实践活动个人对照检查材料思想汇
2014/10/05 职场文书
大学同学聚会感言
2015/07/30 职场文书