删繁就简之Ajax代码封装
来源:互联网 发布:杭州数据资源管理局 编辑:程序博客网 时间:2024/06/07 05:36
使用ajax每次和服务器端进行异步操作时都要创建一个XmlHttpRequest对象实例,考虑跨域问题的处理等等。这样重复性的操作不但会加大工作量还会造成代码冗余,影响系统运行速度。基于面向对象的思想,我们可以将公共性的部分提取出来进行封装,在需要的地方直接调用即可,这样一来不但减少了工作量还提高了系统的性能。
下面是关于ajax中公共方法封装的AJAX.js文件
<span style="font-size:18px;">//创建XMLHttpRequest对象实例var myXmlhttp = function () { //初始化xmlhttp xmlhttp = null; //创建XMLHttpRequest对象 if (window.XMLHttpRequest) { //IE7,IE8,FireFox,Mozilla,Opera... xmlhttp = new XMLHttpRequest(); //alert(xmlhttp); } else if (window.ActiveXObject) { //IE6,IE5... xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); //alert(xmlhttp); } if (xmlhttp == undefined || xmlhttp == null) { alert("当前浏览器不支持创建XMLHttpRequest对象,请更换浏览器"); }}//用户发送请求的方法封装//定义方法send,对传入的method,url和回调函数callback的参数进行判断myXmlhttp.prototype.send = function (method, url, data, callback, failback) { //浏览器支持XMLHttpRequest对象 if (this.xmlhttp != undefined && this.xmlhttp != null) { //将传入的方法名称转换为大写格式 method = method.toUperCase(); if (method != "GET" && method != "POST") { alert("HTTP的请求方法必须是GET或POST"); return; } if (url == null || url == undefined) { alert("HTTP的请求地址必须设置"); return; } var tempxmlhttp = this.xmlhttp; tempxmlhttp.onreadystatechange = function () { if (tempxmlhttp.readyState == 4) {//接收数据完成 if (tempxmlhttp.status == 200) {//正确返回数据 //服务器响应的文本内容 var responseText = tempxmlhttp.responseText; //服务器响应的XML内容对应的DOM对象 var responseXML = tempxmlhttp.responseXML; if (callback == undefined || callback == null) { alert("没有设置处理数据正确返回后的方法"); alert("返回的数据:" + responseText); } else { callback(responseText, responseXML); } } else { if (failback == undefined || failback == null) { alert("没有设置处理数据返回失败的处理方法!"); alert("HTTP的响应码:" + tempxmlhttp.status + "响应码的文本信息:" + tempxmlhttp.statusText); } else { failback(tempxmlhttp.status, tempxmlhttp.statusText) } } } } //缓存处理方法封装 if (url.indexOf("?") >= 0) { url = url + "&t=" + (new Date()).valueOf(); } else { url = url + "?t=" + (new date()).valueOf(); } //跨域问题方法封装 if (url.indexOf("http://") >= 0) { url.replace("?", "&"); url = "Proxy?url=" + url; } this.xmlhttp.open(method, url, true); //如果是POST方法,需要设置请求头 if (method == "POST") { this.xmlhttp.setRequestHeader("Content-Type", "application/x-www.form-urlencoded"); } this.xmlhttp.send(data); } else { alert("XMLHttpRequest对象创建失败,无法发送数据!"); }}//HTTP放弃请求方法的封装myXmlhttp.prototype.abort = function () { this.xmlhttp.abort();}</span>
对封装方法的调用
<span style="font-size:18px;">@{ ViewBag.Title = "panel";}<script src="../../Scripts/mytest/AJAX.js"></script><!document html><script> function test() { //利用XMLHttpRequest对象和服务器端进行交互 //调用封装好的方法 var xmlhttptest = new myXmlhttp(); xmlhttptest.send("GET", "TEST", "", callback, failback); } function callback(responseText, responseXML) { //对回调函数的定义 } function failback(status, statusText) { //对返回数据失败后的处理 }</script><html> <head> <link href="../../Css/easyui.css" rel="stylesheet" /> <link href="../../Css/icon.css" rel="stylesheet" /> </head></html></span>
这种抽象的思想我们每天都在用,一劳永逸。就像JQuery的宗旨一样:写的更少,做的更多。
0 0
- 删繁就简之Ajax代码封装
- 删繁就简
- Ajax通用代码封装
- 封装jquery之ajax
- ajax代码及简单封装
- Ajax实现原理,代码封装
- Ajax基础之封装3
- Js之AJAX简易封装
- 原生js封装AJAX(代码+注释)
- ajax封装回调函数代码
- 编程体会之代码封装
- js之自定义封装ajax类
- Ajax之工厂模式封装XMLHttpRequest
- javascript系列之使用Promise封装ajax
- Ajax技术之Ajax重构(封装XMLHttpRequest)
- 封装Ajax
- Ajax封装
- ajax封装
- hdu5171---GTY's birthday gift
- 王垠:程序员的心理疾病
- php加密解密函数authcode的用法详细解析
- jQuery和CSS3炫酷全屏滑动菜单特效
- 利用POI创建Excel文件
- 删繁就简之Ajax代码封装
- android如何把apk的工程代码放到源码目录下编译
- ViewPager
- 黑马程序员--JAVA基础--测试博客
- spring aop(五)--ProxyFactoryBean创建代理的实现
- Android 源代码中增加新apk
- 回忆一下带学生工作室时的一些趣事
- 螺旋方阵(20)
- spring aop(六)--代理调用机制