用原生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 相关文章推荐
JQuery上传插件Uploadify使用详解及错误处理
Apr 27 Javascript
node.js中的fs.fstat方法使用说明
Dec 15 Javascript
Bootstrap实现翻页效果
Nov 27 Javascript
了解ESlint和其相关操作小结
May 21 Javascript
微信小程序自定义组件实现tabs选项卡功能
Jul 14 Javascript
vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】
Aug 29 Javascript
JavaScript实现图片的放大缩小及拖拽功能示例
May 14 Javascript
React路由鉴权的实现方法
Sep 05 Javascript
使用preload预加载页面资源时注意事项
Feb 03 Javascript
Vue路由切换页面不更新问题解决方案
Jul 10 Javascript
VUE中setTimeout和setInterval自动销毁案例
Sep 07 Javascript
小程序实现文字循环滚动动画
Jun 14 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
重置版游戏视频
2020/04/09 魔兽争霸
PHP中文件缓存转内存缓存的方法
2011/12/06 PHP
免费的ip数据库淘宝IP地址库简介和PHP调用实例
2014/04/08 PHP
PHP对象相关知识总结
2017/04/09 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
Laravel 加载第三方类库的方法
2018/04/20 PHP
Javascript的getYear、getFullYear、getUTCFullYear异同分享
2011/11/30 Javascript
js实现收缩菜单效果实例代码
2013/10/30 Javascript
使用js实现关闭js弹出层的窗口
2014/02/10 Javascript
JavaScript 学习笔记之变量及其作用域
2015/01/14 Javascript
jquery实现select选择框内容左右移动代码分享
2015/11/21 Javascript
JavaScript中校验银行卡号的实现代码
2016/12/19 Javascript
详解数组Array.sort()排序的方法
2020/05/09 Javascript
基于input动态模糊查询的实现方法
2017/12/12 Javascript
[27:28]Ti4 冒泡赛第二天 iG vs NEWBEE 1
2014/07/15 DOTA
python3 发送任意文件邮件的实例
2018/01/23 Python
在python中按照特定顺序访问字典的方法详解
2018/12/14 Python
pyqt5利用pyqtDesigner实现登录界面
2019/03/28 Python
python实现几种归一化方法(Normalization Method)
2019/07/31 Python
导入tensorflow时报错:cannot import name 'abs'的解决
2019/10/10 Python
解决Pycharm中恢复被exclude的项目问题(pycharm source root)
2020/02/14 Python
Python模拟FTP文件服务器的操作方法
2020/02/18 Python
tensorflow指定CPU与GPU运算的方法实现
2020/04/21 Python
python 代码实现k-means聚类分析的思路(不使用现成聚类库)
2020/06/01 Python
Python编写memcached启动脚本代码实例
2020/08/14 Python
基于 HTML5 WebGL 实现的医疗物流系统
2019/10/08 HTML / CSS
学校联谊协议书
2014/09/16 职场文书
国际贸易实训报告
2014/11/05 职场文书
2014年统战工作总结
2014/12/09 职场文书
2014年信息中心工作总结
2014/12/17 职场文书
社区挂职锻炼个人工作总结
2015/10/23 职场文书
PHP命令行与定时任务
2021/04/01 PHP
正确的理解和使用Django信号(Signals)
2021/04/14 Python
新手入门Jvm-- JVM对象创建与内存分配机制
2021/06/18 Java/Android
C站最全Python标准库总结,你想要的都在这里
2021/07/03 Python
从原生JavaScript到React深入理解
2022/07/23 Javascript