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

  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(){return new E.XMLHttpRequest}

  2. Js代码:

  

复制代码 代码如下:

  function confirmcommit(){

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

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

  var proposer = $("#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("JQuery AJAX Error!");

  },

  success:function(msg){

  alert(msg);

  return;

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

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

  }

  }

  });

  }

  }

  3 .Java代码:

  

复制代码 代码如下:

  public ActionForward confrimExchangeGoods(ActionMapping mapping,

  ActionForm form, HttpServletRequest request,

  HttpServletResponse response) throws Exception {

  log.info("确认换货 confrimExchangeGoods start...............");

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

  String wlCompany = request.getParameter("wlCompany");

  String wlId = request.getParameter("wlId");

  String proposer = request.getParameter("proposer");

  .....

  }