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

转载于:https://www.cnblogs.com/zuxOK/archive/2012/05/07/2487053.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值