修正ExtJS Form Submit时输入数据带有特殊字符问题

也有很多人反应过,ExtJS里使用HtmlEditor时,如果输入了格式,使用Form.submit时会出错

其实不光是HtmlEditor,包括普通的输入项,如果输入<br>之类的标签,都可能会出现

.Net网站则报了个参数有危险字符的警告错误

奇怪的是有时光输入<符号也不一定会出错

解决办法是在向网站发送数据前,先对数据进行HtmlEncode,把<符号变成转义字符串

但是对ExtJS就麻烦了,因为使用的是ExtJS的默认的Form的Action操作

打开ExtJS的三个核心库看了半天,最后确认问题是在序列化上,改了半天没反应,调了下才发现因为使用了同步机制,应该修改后来增加的ext-basex.js文件

把里面进行Ajax传输前对Form序列化的地方做了下改动,终于可以了

不过ext-basex.js文件比核心三个文件好改多了,那三个文件是压缩过的,代码密密麻麻的......

找到这个方法:

  serializeForm : function(){

然后找到这行:

    data += encoder(name) + '=' + encoder(element.value) + '&';

改成:

    data += encoder(name) + '=' + encoder(Ext.util.Format.htmlEncode(element.value)) + '&';

OK,测试问题解决,可以保存了

查查数据库,保存的有点问题,需要在读取数据的地方进行HttpUtility.HtmlDecode操作,这样数据库里保存的就不是编过码的格式了

posted @ 2012-05-07 10:53  Zux  阅读(1645)  评论(0编辑  收藏  举报