您的位置:首页 > 其它

J2EE AJAX(六) 如何处理复杂的返回值类型

2012-08-02 14:03 288 查看
这次的AJAX系列, 实际上是我平时所有用过的AJAX实现方式汇总(J2EE环境), 在这些所有的实现方式里面, 我最常用的是使用Prototype发送/接收请求, 隐藏帧技术虽然强悍, 但在客户都不要求回退处理的情况下, 我也一般不使用, 但是, 在此仍然强烈推荐.

让我感到伤心的是, 感觉大家对DWR的关心度更高一些, 实际上, 我从来没有在商业项目中用过DWR, DWR只是我自娱自乐地研究时进行了一些测试. 我不喜欢封装的太厉害的东西, 除非它能给我带来很大的方便. 我并不是排斥DWR, 我只是希望, 各位在使用DWR前, 能够熟练掌握隐藏帧技术及XmlHttpRequest技术, 这是AJAX的基础, 即使切换到.net, PHP等开发平台, 这两种技术仍然可以继续使用, Prototype发送AJAX请求不过是对XmlHttpRequest的封装, 也没有兼容性上的问题,
但对于DWR, 在.net下有一个类似的框架, 叫做AJAX.NET, 在PHP下我不清楚, 但使用DWR意味着, 你的AJAX经验将会绑定到一个固定的平台上, 你的一切AJAX操作, 将会以DWR为核心进行考虑, 这并不是AJAX的本意所在.

本系列重点在于讲述AJAX的各种实现方式, 不涉及更加具体的业务. 例如, 如果返回表格类的数据, 应使用何种格式返回并如何处理等, 如果大家有兴趣, 将开专文讨论. 本文的目的只在于演示, 我从何从客户端发出请求, 从服务器端取得数据, 就这么简单.

现在有种倾向是使用AJAX实现所有的服务器操作, 这个不是我喜欢的方式, 例如分页操作, 本身分页操作就是刷新整个页面(最起码是大部分), 使用AJAX除了增加编程复杂性, 并不会给用户体验带来大的改善.

以上只是本人观点, 如有不同意见, 请勿使用攻击性语言, 拜托.

最近有人针对本文提了一些问题, 例如如何使用AJAX传回表格数据, 以及如何进行级联之类. 算了, 不再开贴子了, 就在这里再多说几句吧, 其实这些问题使用前文的知识都可以解决. 大家使用AJAX, 一定要记住一点, 那就是分清哪些事情应该是服务器做的, 哪些事情是需要客户端完成的. 而客户端与服务器之间的数据传递, 只有一种格式, 那就是字符串, 不可能指望服务器端直接传一个表格或数组给客户端, 当然, 有些框架支持这些对象, 但这正是我反对直接使用框架的原因, 这样给初学者造成了一种错觉, 那就是客户端想要的东西,
都可以在服务器端实现, 客户端只需坐享其成就可以了. 实际情况不是这样的, 只有字符串, 才是两者之间真正传递的数据格式.

以表格数据为例, 例如, 需返回如下表格

Col1Col2
1,11,2
2,12,2
3,13,2
最简单的方法是返回如下字符串1,1#1,2$2,1#2,2$3,1#3,2, 客户端获取到这个字符串后, 可以使用String.split方法将其解析为需要的表格数据. 这种方式最简单, 直观, 编程时也很常用. 当然, 这会带来交流上的问题, 如果是一个人搞定的小项目, 这样没啥问题, 如果多人协作, 有人负责服务器端, 有人负责客户端, 这种方式就比较难弄了.

替代的方式是将返回字符串按JSON格式或XML格式返回, 至于客户端如何解析, 请参考本人写的以下两管BLOG

JSON入门

在JavaScript中使用DOM解析XML数据

其它的类似的问题可以均以此方式解决, 关键在于定义返回的字符串格式及客户端的解析程序
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: