20090325 14:33 Ajax三种传值格式的体验

这两天随便学习学习,用了用ajax,记得师兄说过他用ajax经历了三个阶段,最开始传值用html,后来用xml,最后用json,我没怎么用过ajax,看过这方面的东西,但是没有实际动手做过实验,这两天就动手做做,尽管外面天气很好,但是我能为尝试一个新的东西感到很高兴

我按照开发ajax程序惯有的步骤,很快就写出了一个简单的程序,用的是html传值,在js里面把responseText的内容alert出来看到,html传值把所有的内容全部传过去了,貌似消耗的资源比较多,尤其是比较大的开发,而且,国际大牛ppk也写过一篇文章说用html传值在碰到form的时候,会有严重的错误,而且,在需要添加样式的时候,传回的html会很复杂

我接着用json来重新写这个程序,之所以我先用json,而不是xml,是因为前一天我用java已经实现了把数据组合成json的格式,只需要把那个程序稍微改一些就能用在这个程序中,很快,我就写好了,但是后来碰到一个问题,我得到的是string,而不是object,这样的话,用length来循环最后得到的是错误的结果,上网查了一下,需要用到eval函数,把string变成object,哈哈,终于搞定

感觉json很符合js的格式要求,json本身就是一个js对象,用js来操作js的对象,非常方便

第三种,当然是用xml,我用一个servlet在后台把数据变成xml形式,然后在js中通过responseXml来得到数据,可是,噩梦由此开始,我能用alert(responseText)打印出完整的符合要求的xml数据,但是就是不能通过responseXml来得到我要的结果,最后,上网找了很久资料,网上有很多人也碰到有我这样的问题,但是我没找到合适的解决方案,最后,看到一个网友说要:response.setContentType("text/xml;charset=UTF-8");,我之前用的是:response.setContentType("text/xml;charset=gbk");,改了这句话后,我的程序终于正常了,我当时那个兴奋啊,要知道我调试和找资料花了一个晚上和一个早上,太郁闷了,就是这样一个编码把我弄的这么惨,也好,锻炼我的解决问题的能力和耐心,而且,这个问题算是难忘了

Ppk的博客“The AJAX response: XML, HTML, or JSON?”对ajax的三种传值形式都作了讨论,而且最后他还提了四个问题,然后自己作了回答,文章大家有兴趣可以看看,只是我还有一些迷惑,ppk先生为什么说自己第一选择是xml,我有两个师兄都在腾讯,他们开发ajax用的都是json,而ppk先生说json的优点是符合js的数据格式,而且能用于跨域访问,而它的缺点是一般人读起来不习惯,难以理解,而xml所有的人都能理解,而且xml已经广为接收,xml的缺点就是读取数据非常麻烦,但是ppk写了一个非常方便的函数,用那个函数取值就像读取对象里面的属性一样非常简单。我用了那个函数,非常感谢ppk,那函数用起来很方便

我个人觉得json更容易读懂,也很容易理解,也许是个人对xml格式感到麻烦,而且在开发的过程中出现了一个麻烦的问题,也许是自己没达到大师那种境界,大师的第一选择是xml,然后是html,接着大师说以后要好好学习和利用json,我想,json大概会是以后的热门吧

原文地址:https://www.cnblogs.com/ymj0906/p/2587969.html