[原创]JQuery的Validation插件中Remote验证的中文问题

前段时间,再次出现AJAX中文编码问题,导致会员名重复检测失败,不过这次出现问题的是Validation插件的remote验证。根据上次的经验,我将

1. contentType: "application/x-www-form-urlencoded; charset=utf-8",

加入到ajax请求的参数中,结果这次居然不起作用了。

多次观察Fiddler结果,发现无效后,只好打开JQuery.Validation.js寻求答案了。

在remote的代码中,我发现:

01. ...
02. var data = {};
03. data[element.name] = value;
04. $.ajax($.extend(true, {
05. url: param,
06. mode: "abort",
07. port: "validate" + element.name,
08. dataType: "json",
09. data: data,
10. ...

原来插件自己定义了提交的数据,直接将要验证的数据以json格式传给服务器了。难怪针对form的编码定义无效。马上将value进行强制的编码encodeURIComponent(value),果然就好了!

后记:

这种方法在服务器代码处理的时候,必须显式地解码数据,通用性很差。于是,之后还是回到起点来研究更好的方法。

为了防止Validation插件对输入数据的处理,我试着采用自己的Option来覆盖Validation的Option定义:

1. remote: {
2. url: "ajax.aspx?a=xxx",
3. type: "post",
4. dataType: "json",
5. contentType: "application/x-www-form-urlencoded; charset=utf-8",
6. data: { txt1: function() { return $("#txt1").val(); } }
7. }

然后在服务器端代码中,取得Form数据中的对应数据,这样就避免了对Validation的修改,同时也满足了我的要求。

 转载请保留原文链接: http://www.luyuliang.com/post/chinese-issue-in-jquery-validation-plugin.aspx

 

 

转载于:https://www.cnblogs.com/luyuliang/archive/2010/07/25/1784921.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值