• prototype json 之间奇怪的关系

    2007-02-04

    本周休假回来之后离开了VC,又走近了Java,真亲切,呵呵。

    昨天做公司一个活儿的前端页面的时候根据同事的建议使用了Prototype。

    现在流行Ajax,页面要是不停的刷新,都不好意思给人家看。唉,逼得人没法子了。以前在做幻灯的时候也用了Prototype,不过已经过去半年多了,具体的用法也忘记得差不多了,只记得我当时都返回XML数据,自己写了个简单的XML解析函数,费了好大劲儿。

    这回我决定使用JSON,目的只有一个--偷懒,不用再解析XML才能得到数据。Prototype支持JSON(在http header中增加一个X-JSON就行了,Prototype自动会把json对象返回给调用函数)。当我完成一个实作之后,就是觉得这也太好用了,向作者致敬。开始在项目中实现功能,发现了一个对我们中国人来说致命的问题,对json返回的中文解析时会出错,无法正确的得到一个json对象,甚至还会报出[Object Error]错误。很奇怪Prototype为什么要采用在Header中增加自定义的X-JSON来实现此功能,IE中Header的长度是有限制的,当数据量比较大时,难免会出问题。

    所以,还是把JSON String写到HTTP body中,自己手工再执行一下,以获取json object。

    如果要在Header中实现,为了避免无法解析,必须在增加header之前转码,我试了一下,对IE,直接把String 由GBK编码转成ISO8856-1就可以了,在Prototype中,可以正常解析json,但此时FireFox中却是乱码了,难道要在服务器端根据浏览器的类型进行适配?

    X-JSON Header 是个好想法,不过实现起来比直接在http body中返回json object复杂,简单就是美,呵呵。

    推荐一本讲Groovy的书《Groovy In Action》,为数不多的讲解Groovy的书,正在努力攻读,争取春节后就把它看完。


    收藏到:Del.icio.us




发表评论

您将收到博主的回复邮件
记住我