AJAX技术学习
来源:互联网 发布:淘宝介入是怎么处理的 编辑:程序博客网 时间:2024/05/22 16:06
AJAX也就是基于XML的异步JavaScript,是当前WEB开发中一个重要的技术模式,最近才开始学习AJAX的相关知识,呵呵,比较晚:),偶最近在学习江苏移动营业厅的网页实现时,觉得其网站的AJAX实现比较巧妙,也比较小巧简单。所以摘下他的JS来学习下,
建立一个net类,用net.ContentLoader方法进行调用,我在他实现的类中稍微做了一点点的修改就是加入了来准备阶段执行的函数。代码如下:
var net = new Object();net.READY_STATE_UNINITIALIZED= 0; /*未初始化*/net.READY_STATE_LOADING = 1; /*正在装载*/net.READY_STATE_LOADED = 2; /*装载完毕*/net.READY_STATE_INTERACTIVE = 3; /*交互中*/net.READY_STATE_COMPLETE = 4; /*完成*/net.ContentLoader = function( component, url, method, requestParams ) { this.component = component; this.url = url; this.requestParams = requestParams; this.method = method;}net.ContentLoader.prototype = { /* 取得浏览器的类型 */ getOsType : function () { var OsObject = ""; if(navigator.userAgent.indexOf("MSIE")>0) { return "MSIE"; } if(isFirefox=navigator.userAgent.indexOf("Firefox")>0){ return "Firefox"; } if(isSafari=navigator.userAgent.indexOf("Safari")>0) { return "Safari"; } if(isCamino=navigator.userAgent.indexOf("Camino")>0){ return "Camino"; } if(isMozilla=navigator.userAgent.indexOf("Gecko/")>0){ return "Gecko"; } }, getTransport: function() { var transport; if ( window.XMLHttpRequest ) transport = new XMLHttpRequest(); else if ( window.ActiveXObject ) { try { transport = new ActiveXObject('Msxml2.XMLHTTP'); } catch(err) { transport = new ActiveXObject('Microsoft.XMLHTTP'); } } return transport; }, sendRequest: function() { if (this.getOsType() != "Firefox") { if ( window.netscape && window.netscape.security.PrivilegeManager.enablePrivilege) netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead'); } var requestParams = [] for ( var i = 0 ; i < arguments.length ; i++ ) requestParams.push(arguments[i]); /*发送建立中*/ this.component.updateCreate(); /*开始发送*/ var oThis = this; var request = this.getTransport(); request.open( this.method, this.url, true ); request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); request.setRequestHeader('Connection', 'Close'); /*建立返回状态改变时执行参数*/ request.onreadystatechange = function() { oThis.handleAjaxResponse(request) }; request.send( this.queryString(requestParams) ); }, /* 传送参数组装 */ queryString: function(args) { var requestParams = []; for ( var i = 0 ; i < this.requestParams.length ; i++ ) requestParams.push(this.requestParams[i]); for ( var j = 0 ; j < args.length ; j++ ) requestParams.push(args[j]); var queryString = ""; if ( requestParams && requestParams.length > 0 ) { for ( var i = 0 ; i < requestParams.length ; i++ ) queryString += requestParams[i] + '&'; queryString = queryString.substring(0, queryString.length-1); } return queryString; }, handleAjaxResponse: function(request) { if ( request.readyState == net.READY_STATE_COMPLETE ) { if ( this.isSuccess(request) ) this.component.ajaxUpdate(request); else this.component.handleError(request); } }, isSuccess: function(request) { return request.status == 0 || (request.status >= 200 && request.status < 300); }};/*Ajax获取数据回调的通用组件*/CommonAjaxComponent = function (onCreate,callBack, handleError) {/* 准备中执行函数 */this.updateCreate = onCreate;/* 处理取回的数据 */this.updateCallBack = callBack;/* 处理请求异常 */this.handleError = handleError;};CommonAjaxComponent.prototype = {ajaxUpdate : function (request){this.updateCallBack(request.responseText);}};
其调用方法如下:
/* 取得成功后执行函数 */function getDataSuccess(result){ try{ //返回的字符串用 eval() 转换为JS对象 var dataInfo = eval("(" + result + ")"); //更新公告栏信息 alert(dataInfo.result); } catch(exception){}}//数据取得失败function getDataFail(result){ try{ alert("失败"); } catch(exception){}}function queryBulletinInfos(){ //传送参数建立 var data = []; data.push("parentId=" + parentId); var ajaxReq = new net.ContentLoader(new CommonAjaxComponent(function(){}, getDataSuccess, getDataFail), "/yytBulletin.do?method=getBulletinInfos&count=5", "post", []); ajaxReq.sendRequest();}
- AJAX技术学习
- AJAX技术学习之一
- ajax技术学习网址
- 如何学习AJAX技术
- 学习Ajax技术
- 如何学习AJAX技术
- Ajax技术学习
- AJAX技术学习
- AJAX技术学习笔记
- ajax技术学习
- 学习Ajax技术
- AJAX技术学习总结
- 学习ajax最新技术网站
- SEO学习:浅析Ajax技术
- Ajax 页面无刷新技术学习(GET)
- 跟“无为”学习Ajax技术第一天
- 跟“无为”学习Ajax技术第二天
- 跟“无为”学习Ajax技术第三天
- 破解网络尖兵
- 如何修改机器的MAC地址
- J2ME基础入门
- linux gtk IDE 程序设计(一)
- 配置 SQLServer 来存储 ASP.NET 会话状态
- AJAX技术学习
- What is the Indexing Service?
- 关于STL中stack的实现的讨论
- PetShop4.0的一个安装问题
- 第5章 函数
- Current Screenshot of my Operating System
- 一本有90000个作者的书
- FTP命令大全
- zip 的压缩原理与实现