修正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操作,这样数据库里保存的就不是编过码的格式了