conan

导航

Ajax学习笔记(2) - 一定要用XML吗?

Ajax一定要用XML吗?我觉得不一定用。

不用XML的理由:
1. javascript脚本解析Xml比较慢;
2. 对于一些简单数据,用Xml有点大炮轰蚊子的感觉;
3. XmlHttp提供了responseText,就是给了大家不用Xml的方便;

不用Xml用什么?
可以采用技术很多,对于简单数据你可以返回自定义的数据格式,比如,第1位是状态位,第2位之后是数据。对于复杂数据,你甚至可以直接返回javascript脚本,然后用eval执行。

在最近写的一个无刷新聊天程序中,我就使用了直接返回javascript脚本的方式,下面是自动获取消息的部分代码。

var xmlhttp=createXH();
function checkMsg(){
  xmlhttp.open('Get', 'Message/CheckNew.aspx', true);
  xmlhttp.onreadystatechange=continueCheckMsg;
  xmlhttp.send('');
}

function continueCheckMsg(){
  if(xmlhttp.readyState==4){
    var rt=xmlhttp.responseText;
    if(rt!=''){
      var msgs=eval(rt);
      // ... 接下来就是处理消息分发
    }
  }
  setTimeout('checkMsg()', 10000); // 每隔10秒刷新一次
}

说明:
1. rt=xmlhttp.responseText返回新消息的数据,当没有新消息时,返回空;当有新消息时(可以使多条),返回的内容格式如下:
[['发送人1','发送时间1','消息内容1'], ['发送人2','发送时间2','消息内容2'], ...]
2. 通过var msgs=eval(rt)后,msgs就是存放了n条消息的二维数组,然后按二维数组的方式处理就可以了;

最后,收集了一篇比较有用的文章,里面对使用Xml有详细介绍:
http://www.dragonson.com/doc/ajax.html

posted on 2005-08-21 12:38 简单生活 阅读(519) 评论(8)  编辑 收藏 收藏至365Key 所属分类: .Net

评论

# re: Ajax学习笔记(2) - 一定要用XML吗? 2005-08-21 14:13 ocean

我不建议这样,如果数据简单,js解析xml再慢也慢不到什么地方。xml的数据定义明确,使用简单,为日后的维护提供了很大的方便。如果程序都都是采用你自己定义的数据格式,而且不同的数据可能还有不同的格式,那为日后的维护带来了不便。   

# re: Ajax学习笔记(2) - 一定要用XML吗? 2005-08-21 15:02 简单生活

你说的可维护性有道理,但xml文本的体积也比自定义格式的体积大(多出的那部分就是用来进行数据定义了)。
而采用Ajax的目的就是减少网络传输,提高速度,所以我才觉得应该尽量减少不必要的字节。
另外如果用Xml方式的话,再想兼顾不同的浏览器就很难了。   

# re: Ajax学习笔记(2) - 一定要用XML吗? 2005-08-21 15:06 NickYao

我也比较同意OCEAN的观点~~~
我现在越来越觉得降低维护的成本比降低开发的成本更重要。
个性化的数据格式,你现在在开发的时候当然很清楚。
不过当你隔个一两年再回头看你的代码时,你可能也会一头雾水,
更不要说接你手的人拉。
所以说标准真的很重要,如果大家都按标准,这世界将会少很多麻烦。   

# re: Ajax学习笔记(2) - 一定要用XML吗? 2005-08-21 15:34 NickYao

没错,AJAX的目的是要减少网络传输~~
不必每个请求都重新下载整个页面,只下载需要更新的部分数据,以提高响应速度。
但我认为每次需要更新的那部分数据本来就应该不大,因此采用XML格式的话,也不会
比你自定义的数据格式大多少。
如果你一次要更新很大的数据的话,我觉得应该用别的方法来解决。
因为如果数据量太大,你用自定义格式也没多大帮助。

还有XML不是每个浏览器都支持的吗,为什么兼顾起来会很难呢?

我也是刚学习AJAX,有很多东西不懂,说得不对的地方请多多指教。
  

# re: Ajax学习笔记(2) - 一定要用XML吗? 2005-08-21 22:19 简单生活

从理论上来说,很多浏览器都支持XML,但实际使用上,总是会遇到不少兼容性方面的问题。 每次为了这些兼容性,总要花费我不少时间,可能是我对这方面知识了解太少了,所以就想避开这个问题,找个简单一点的方式好上手:)   

# re: Ajax学习笔记(2) - 一定要用XML吗? 2005-08-21 23:39 birdshome

http://www.cnblogs.com/birdshome/archive/2005/03/24/123046.html

不过需要注意自己做特殊字符的转换,比如: \r \n ' "等。   

# re: Ajax学习笔记(2) - 一定要用XML吗? 2005-08-22 02:13 春鱼

真奇怪,你的问题从何而来? 就单纯的 AJAX 的应用,和XML没有什么“一定”的关系。

更奇怪的是,很多朋友一直在嚷,AJAX 很 OK 啊,很热啊,学习啊。AJAX 很好,AJAX 只是 AJAX,不是什么高深莫测的东西。AJAX不是天书。AJAX不是需要流血革命。

大家应该务实一些,多写一些工程实践的、有参考价值的东西。   

# re: Ajax学习笔记(2) - 一定要用XML吗? 2005-08-22 18:53 简单生活

To 春鱼:
你说的很有道理,对待技术确实应该务实一点,就拿这个Ajax来说吧,并不太适合开发复杂应用。不过对于简单应用来说,比如最近项目中就需要定时监控客户端的在线状态,在这种情况下,用Ajax就比刷新页面的方式要有效得多。   

posted on 2005-08-25 00:49  Conan  阅读(408)  评论(0)    收藏  举报