zl程序教程

您现在的位置是:首页 >  前端

当前栏目

jquery.ajax的url中传递中文乱码问题的解决方法

jQuery中文方法AJAX 问题 解决 乱码 url
2023-06-13 09:15:17 时间

JQuery

JQuery默认的contentType:application/x-www-form-urlencoded

这才是JQuery正在乱码的原因,在未指定字符集的时候,是使用ISO-8859-1

ISO8859-1,通常叫做Latin-1。Latin-1包括了书写所有西方欧洲语言不可缺少的附加字符。

JQuery的Ajax根本没有考虑到国际化的问题,使用了欧洲的字符集,所以才引起了传递中文出现乱码的问题。

而我们的UTF-8则可以解决这一问题。

最终指需要修改JQuery的代码,显式声明contentType使用utf-8字符集,即可解决GB2312中文传递的问题。

1.修改JQuery代码

只需要简单的将JQuery的代码加以修改,加上charset=UTF-8就可以了,这样不需要改变改什么web.config或什么在页面中改编码什么的了,也不需要用escapc(str)再在服务端解码。英文怎么传递,中文也怎么传递。

修改用到的jquery文件:jquery-1.4.4.min.js

ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded;charset=UTF-8",processData:true,async:true,xhr:function(){returnnewE.XMLHttpRequest}

2.Js代码:

复制代码代码如下:

functionconfirmcommit(){

   varwlCompany=$("#wlCompany").val();//这里含有中文

   varwlId=$("#wlId").val();

   varproposer=$("#proposer").val();

   if(confirm("确认要换货吗")){

$.ajax({

type:"POST",

url:"${pageContext.request.contextPath}/returnGoods/confrimExchangeGoods.do",

data:"wlCompany="+wlCompany+"&wlId="+wlId+"&proposer="+proposer,//直接传值

dataType:"text",

error:function(){

   alert("JQueryAJAXError!");     

},

success:function(msg){

   alert(msg);

   return;

   if(msg=="换货成功"){

 document.location="${pageContext.request.contextPath}/orderItem/queryProduceItem.do?orderBusType="+${orderBusType};

   }

}

});

    }

 }


3.Java代码:
复制代码代码如下:

publicActionForwardconfrimExchangeGoods(ActionMappingmapping,

ActionFormform,HttpServletRequestrequest,

HttpServletResponseresponse)throwsException{

log.info("确认换货confrimExchangeGoodsstart...............");

response.setCharacterEncoding("UTF-8");//这里要设置一下

StringwlCompany=request.getParameter("wlCompany");

StringwlId=request.getParameter("wlId");

Stringproposer=request.getParameter("proposer");
    .....
}