formValidator ajax 乱码问题

但是用到这个AJAX功能的时候 碰到问题了
Html代码
jQuery("#name").ajaxValidator({ type:"post",url:"worker!findWorker.action",
success : function(data){
if( data == "1" ) return true;
else return false;
},
error: function(){alert("服务器没有返回数据,可能服务器忙,请重试");},
onerror : "该姓名不可用,请更换用户名",
onwait : "正在对姓名进行合法性校验,请稍候..."
});
jQuery("#name").ajaxValidator({
type:"post",url:"worker!findWorker.action",
success : function(data){
if( data == "1" ) return true;
else return false;
},
error: function(){alert("服务器没有返回数据,可能服务器忙,请重试");},
onerror : "该姓名不可用,请更换用户名",
onwait : "正在对姓名进行合法性校验,请稍候..."
});

其实验证时这个框架会自动将你的文本框的值取出来 然绑定在你的URL上 ,
这时候它的URL会变成这样worker!findWorker.action?name=value
value就是你文本框的时候
一般输入非中文的值的话 验证起来 是没有问题的 但是中文就会出问题
在上面这个脚本中,找了N久也没找到解决的方法,网上出现这个问题的人也挺多的,就是没有找到一个把这问题解决了的贴子 。

一般不熟的框架 出了问题 我习惯去瞧瞧它的源码
经过我对源码的分析 发现处理这个中文乱码的问题并不难
打开formValidator.js这个文件
找到
ajaxValid : function(returnObj)
{
....
}

这个方法的这行数据 var srcjo = $("#"+id) ;
我的工具上显示的是414行 我用的formValidator版本是3.5的 可能大家用的和我用的并不一样,但是这个代码在你们的版本里面一定找得到

下面教大家如何它修改
就将"var srcjo = $("#"+id) ;”这行数据改成如下:
var srcjo = $("#"+id).clone();
srcjo.val(encodeURI(srcjo.val()));这样就可以了
对jQuery熟的人肯定知道这两行代码的意思,不懂也没关系 ,我解释下
它的意思就是 将这个对象克隆一份 然后将value进uri编码

这样还不能完全处理乱码的问题
还需要在JAVA后台代码中进行解码 代码如下:
String name = URLDecoder.decode(
ServletActionContext.getRequest().getParameter("name"), "UTF-8");
OK 这样就搞定 ,希望能帮到大家 。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值