我眼中的 AJAX (没有分 :)

maquan 2006-03-03 01:34:36
本人接触 AJAX 不久,没什么研究,不敢做什么“点评”,稍有点心得,供一笑。

在我的眼里,AJAX 已经具体化成一个叫做 SWATO 的东西了。这是一个开源的项目,提供了在服务器端和客户端的 framework。

我这么说,并不表示我认为 SWATO 是一个最好的实现(事实上,我并没有试用过多少个实现),只表示,我认为 SWATO 提供的东西足够了,相对于我期望从 AJAX 技术里得到的好处来说,足够了。

大家都承认,构成 AJAX 的每个单项技术,都不是什么新东西。事实上,我所供职的公司,在自己的软件产品里,已经一直在使用类似的方法了。为了在页面中呈现一棵树,因为内容非常多,无法一次下载,所以用了 DHTML 中一个叫 download 的 Behavior,每次点击向服务器发一个请求,服务器端(用 struts 写的程序)返回一段文本,客户端再进行文本解析,为这棵树增加枝叶。我们内部把这种技术称作“局部提交”,有时叫“逐级展开”,呵呵 :)

相信很多朋友都有类似的经历。

这样一堆代码,从功能上说是实现了,但显然其规范性、可重用性就差很多。等我看到 SWATO 后,我注意到它做了两个很重要的工作,一个是服务器端的包装(你只要写一个普通的 Java Class,提供一些有意义的 method 就可以了,经过简单的配置就可以供客户端请求了),一个是客户端的包装(我的 JavaScript 程序面对的不再是需要自己解析的文本,而是有 property 供使用的 object 了),而这就是我期望 AJAX 技术能给我带来的好处。

其实 SWATO 还做了另一个比较重要的工作,就是对常见的控件(文本框、下拉框等)进行了包装,使它们具有了特定的服务器端交互行为。不过从我个人工作需要来看,对这一块并不是特别感兴趣。

AJAX 并不是新技术,甚至也不是全新的概念,但是,明确作为一个概念把它提出来,我认为至少有两个好处:一个是让软件的设计者更加重视“客户体验”的重要性,并为实现更好的“客户体验”提供一个思路;再一个就是,鼓励大家提供一些具体的实现方案(比如像 SWATO 这样的),从而提高代码的可重用性。
...全文
349 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
eduyu 2006-03-28
  • 打赏
  • 举报
回复
有道理
ddangerous169 2006-03-23
  • 打赏
  • 举报
回复
学习
daitou0322 2006-03-03
  • 打赏
  • 举报
回复
....
马哲 2006-03-03
  • 打赏
  • 举报
回复
看过。
csdn也有一份相关的文档 不过他的已经加密 添加不了附注 所以这里上传一份没有加密的 内容是一样的 目录: 一 AJAX定义 二 现状与需要解决的问题 三 为什么使用AJAX 四 谁在使用AJAX 五 用AJAX改进你的设计   例子1:数据校验   例子2:按需取数据 级联菜单   例子3:读取外部数据 六 AJAX的缺陷 七 AJAX开发   7 1 AJAX应用到的技术     A XMLHttpRequest对象     B Javas cript     C DOM     D XML   7 2 AJAX开发框架     A 初始化对象并发出XMLHttpRequest请求     B 指定响应处理函数     C 发出HTTP请求     D 处理服务器返回的信息     E 一个初步的开发框架   7 3 简单的示例     A 数据校验     B 级联菜单   7 4 文档对象模型(DOM)     7 4 1 DOM眼中的HTML文档:树     7 4 2 HTML文档的节点     7 4 3 使用DOM操作HTML文档   7 5 处理XML文档     7 5 1 处理返回的XML     7 5 2 选择合适的XML生成方式     7 5 3 如何在使用XML还是普通文本间权衡">csdn也有一份相关的文档 不过他的已经加密 添加不了附注 所以这里上传一份没有加密的 内容是一样的 目录: 一 AJAX定义 二 现状与需要解决的问题 三 为什么使用AJAX 四 谁在使用AJAX 五 用AJAX改进你的设计   例子 [更多]
AJAX开发介绍 简单示例 基础知识 简单操作 [removed] var http_request = false; function send_request(url) {//初始化、指定处理函数、发送请求的函数 http_request = false; //开始初始化XMLHttpRequest对象 if(window.XMLHttpRequest) { //Mozilla 浏览器 http_request = new XMLHttpRequest(); if (http_request.overrideMimeType) {//设置MiME类别 http_request.overrideMimeType('text/xml'); } } else if (window.ActiveXObject) { // IE浏览器 try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!http_request) { // 异常,创建对象实例失败 window.alert("不能创建XMLHttpRequest对象实例."); return false; } http_request.onreadystatechange = processRequest; // 确定发送请求的方式和URL以及是否同步执行下段代码 http_request.open("GET", url, true); http_request.send(null); } // 处理返回信息的函数 function processRequest() { if (http_request.readyState == 4) { // 判断对象状态 if (http_request.status == 200) { // 信息已经成功返回,开始处理信息 alert(http_request.responseText); } else { //页面不正常 alert("您所请求的页面有异常。"); } } } function userCheck() { var f = document.form1; var username = f.username.value; if(username=="") { window.alert("用户名不能为空。"); f.username.focus(); return false; } else { send_request('sample1_2.jsp?username='+username); } } [removed]

52,787

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧