jQuery.form.js进行表单提交,中文乱码问题及解决

原文网址:http://www.verydemo.com/demo_c89_i26079.html
源于使用jquery,form.js进行表单提交时,发现保存到数据库时失败,而页面都已经统一为GBK编码;在网上搜了一些答案大部分都是复制粘贴,并不能解决
文章内容如下:


目前处理一个项目需要使用到jquery的form插件进行jsp页面中的form异步提交,我的java和jsp编码都是GBK的,并且在web.xml中也设置了编码格式为GBK。可是就是这个原因让我碰到了提交表单时出现中文乱码的事情。
 
解决办法:经测试OK!!!
没有采用form插件(采用form插件解决办法一样直接对data进行二次转码),而是直接使用jquery的$.ajax()函数进行异步请求:
$(document).ready(function(){
    $('#submit').click(function(){
        var formData = $('#frm1').serialize(); //取表单值 并进行序列化;此时formData已经是乱码了
        formData = decodeURIComponent(formData,true);//一次转码
        formData = encodeURI(encodeURI(formData)); //两次转码
        $.ajax({
            type:'post',
            data:formData,//form表单数据集
            url:'/bshgl/bshczxxcj/admin/writeJbxx.jspx',
            success:function(){
                alert("保存成功!");
            }
        });
    });
});
后台采用springMVC的annotation进行form表单数据接收
String test= URLDecoder.decode(object.getXxx(), "UTF-8");
..../*下面的代码则是调用hibernate方法将数据保存到database中*/
 
得到的test字符为中文。并且可以存入编码为GBK的数据库中,木有问题。
 
而我目前急需解决的问题,后台采用springMVC ,使用@ModelAttribute所接收的form值置于一个对象里面即object中,如果我想将form中的值异步更新到数据库中,那么我就需要对所有的字段进行get和decode。这样做的很麻烦,不知道各位有什么好的办法吗?···
好吧,下面提供我的办法··············但是目前这个办法还不完善:
因为使用的spring来进行bean管理,所以我现在使用的框架中,在entity层和bo层之间还有一个称为dto的一层,他的职责很简单明确,只负责数据传输,每次entity从数据库读取数据,都先将数据copy到dto层,让其去于view打交道,这里就把URLDecoder.decode(object.getXxx(), "UTF-8");置于dto的所有字段的get,set方法中,这样就不需要在Controller层再分别对每个字段进行get并decode了。     不完善的原因是········我在执行bean 拷贝的时候有部分数据没有拷贝进行·····蛋疼

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值