上周编辑反馈我一个奇怪的Bug:很多文章编辑后,就只有一半的内容了!
我很纳闷,怎么会有这样的Bug呢?
等我去看过了问题所在,终于明白了:
程序运行后页面的源码是:
原来在标题中也有双引号,所以firefox以为这是一个Html属性的结束,所以input中的内容是:
我的朋友(”,后面的内容都没有了。
这不简单我马上改好了:
这是jquery的语法。我是在输出数据时先urlencode一下,这样在input的value项中就没有引号了。
然后在客户端加载后完以后,把这个值改成decodeURI计算出来的值,也就是相当于php的一个urldecode操作。
这下以为好了,谁想一测,还不对。有%2C和加号在标题里。
再Google一下,说是javascript中解密urlencode用decodeURIComponent函数要好一些。urldecode无法正常求解包含有英文逗号和加号的串urlencode后的结果。urlencodeURI无法解含有加号的串urlencode后的结果。
现在我只好写了一个先把密文中的加号换成secret串用decodeURIComponent操作,然后再把secret串换回加号。服务器端仍是先urlencode再输出来,客户端这样进行urldecode解码:
这样,才是正确的对应于php端的urldecode的javascript版的解码函数。
注意,我的php是utf-8的。如果是gb2312,需要更麻烦一些。因为javascript好像一般是utf-8的内码操作。
现在bug好像越来越多,忙不过来了。得上bug系统了。