jquery $("#form").serialize()传中文乱码解决方法

解决jQuery表单中文乱码
本文介绍使用jQuery的.serialize()方法导致表单中文字符乱码的问题及其解决方案。通过两次encodeURI编码和一次decodeURIComponent解码操作,可以有效解决中文乱码问题。

jquery form表单.serialize()序列化后中文乱码问题原因及解决

原因:.serialize()自动调用了encodeURIComponent方法将数据编码了 
解决方法:调用decodeURIComponent(XXX,true);将数据解码 
例如: 
var params = jQuery("#formId").serialize(); // http request parameters. 

params = decodeURIComponent(params,true);

再进行编码

params = encodeURI(encodeURI(params));

后台

params = java.net.URLDecoder.decode(params , "UTF-8");

问题解决。

附js示例

function submitForm(){

    var params= jQuery('#form').serialize();

    params= decodeURIComponent(params,true);

     params= encodeURI(encodeURI(params));

     jQuery.ajax({

       url:"test.shtml?r="+ Math.random(),

       type:"post",

       data:params,

       success:function(msg){

         alert(msg);

       }

    });

}

<%-- Created by IntelliJ IDEA. User: 13498 Date: 2025/9/22 Time: 08:59 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <meta charset="UTF-8"> <title>首页</title> <script src="js/jquery.js"></script> <script type="text/javascript"> $(function (){ $.post("jjb.do",function (f){ $.each(f,function (i,e){ $("#xx").append("<option value='"+e.cid+"'>"+e.cname+"</option>"); }) },"json") $.post("jjb.do",function (f){ $.each(f,function (i,e){ $("#xxx").append("<option value='"+e.cid+"'>"+e.cname+"</option>"); }) },"json") $("#xxt").click(function (){ // var xd=$("input[type=xx]").val(); var xy=$("input[type=xxx]").val(); if (xd!=xy){ $.post("a.do",$("form").serialize(),function (f){ $.each(f,function (i,e){ $("#tb").append('<tr>\n'+ '<td>'+e.tname+'</td>\n'+ '<td>'+e.tprice+'</td>\n'+ '</tr>'); }) },"json") }else{ alert("错误") } }) }) </script> </head> <body> <a href="save.jsp">添加</a> <form> <div class="label"> <label>始发站:</label> </div> <select class="input" id="xx" name="cid"> <option>--请选择--</option> </select> <div class="label"> <label>终点站:</label> </div> <select class="input" id="xxx" name="cid" > <option>--请选择--</option> </select> <div class="field"> <button class="button bg-main icon-check-square-o" type="button" id="xxt">查询</button> </div> <table> <tr> <th>车名</th> <th>价格</th> </tr> <tbody id="tb"> </tbody> </table> </form> </body> </html> 为什么下拉表单会显示乱码
最新发布
09-23
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值