用原生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 相关文章推荐
关于取不到由location.href提交而来的上级页面地址的解决办法
Jul 30 Javascript
使用js获取QueryString的方法小结
Feb 28 Javascript
IE关闭时判断及AJAX注销案例学习
Feb 18 Javascript
一个js控制的导航菜单实例代码
Dec 03 Javascript
Javascript selection的兼容性写法介绍
Dec 20 Javascript
jQuery获取上传文件的名称的正则表达式
May 21 Javascript
详解Node.js如何开发命令行工具
Aug 14 Javascript
JS输出空格的简单实现方法
Sep 08 Javascript
JavaScript中原型链存在的问题解析
Sep 25 Javascript
vue-router 源码之实现一个简单的 vue-router
Jul 02 Javascript
Vue3.0结合bootstrap创建多页面应用
May 28 Javascript
JS动态显示倒计时效果
Dec 12 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和ACCESS写聊天室(八)
2006/10/09 PHP
利用phpexcel把excel导入数据库和数据库导出excel实现
2014/01/09 PHP
在win系统安装配置 Memcached for PHP 5.3 图文教程
2015/03/03 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
2016/05/31 PHP
Yii2实现同时搜索多个字段的方法
2016/08/10 PHP
PHP合并数组的2种方法小结
2016/11/24 PHP
为你的 Laravel 验证器加上多验证场景的实现
2020/04/07 PHP
jquery构造器的实现代码小结
2011/05/16 Javascript
js关闭模态窗口刷新父页面或跳转页面
2012/12/13 Javascript
js文本框输入点回车触发确定兼容IE、FF等
2013/11/19 Javascript
了不起的node.js读书笔记之例程分析
2014/12/22 Javascript
javascript实现数独解法
2015/03/14 Javascript
js插件设置innerHTML时在IE8下提示“未知运行时错误”解决方法
2015/04/25 Javascript
JavaScript中的this机制
2016/01/30 Javascript
jQuery实现下拉菜单的实例代码
2017/06/19 jQuery
详解 vue.js用法和特性
2017/10/15 Javascript
AngularJS实现controller控制器间共享数据的方法示例
2017/10/30 Javascript
最新Javascript程序员面试试题和解题方法
2017/11/23 Javascript
JS实现给数组对象排序的方法分析
2019/06/24 Javascript
js new Date()实例测试
2019/10/31 Javascript
python33 urllib2使用方法细节讲解
2013/12/03 Python
使用Python脚本来获取Cisco设备信息的示例
2015/05/04 Python
PyQt5 在label显示的图片中绘制矩形的方法
2019/06/17 Python
详解Python中import机制
2020/09/11 Python
html5+css3进度条倒计时动画特效代码【推荐】
2016/03/08 HTML / CSS
Parfumdreams芬兰:购买香水和化妆品
2021/02/13 全球购物
Aosom西班牙:家具在线商店
2020/06/11 全球购物
Auguste The Label官网:澳大利亚一家精品女装时尚品牌
2020/06/14 全球购物
函授自我鉴定
2013/11/06 职场文书
自我评价的范文
2014/02/02 职场文书
教师远程培训感言
2014/03/06 职场文书
公司开业庆典主持词
2014/03/21 职场文书
法律意见书范文
2015/05/20 职场文书
python中的被动信息搜集
2021/04/29 Python
如何制作自己的原生JavaScript路由
2021/05/05 Javascript
图文详解Nginx版本平滑升级方案
2021/09/15 Servers