遇到问题---getJson传给后台的参数乱码

前端之家收集整理的这篇文章主要介绍了遇到问题---getJson传给后台的参数乱码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。


项目中使用spring sturts action 传值 出现乱码 而且google浏览器中没乱码 ie下传值乱码


在jsp中使用getJson传值

  1. $.getJSON("<%=basePath%>/query/searchCompareTable?geneName="+geneName+"&fieldName="+fieldName+"&minValue="+minValue+"&maxValue="+maxValue,function(datatable) {


其中geneName 和 fieldName是 中文或者英文名



java中 action接收为set接收

  1. private String geneName;
  2. private String fieldName;
  3. private double minValue;
  4. private double maxValue;
  5. public void setGeneName(String geneName) {
  6. this.geneName = geneName;
  7. }
  8. public void setFieldName(String fieldName) {
  9. this.fieldName = fieldName;
  10. }
  11. public void setMinValue(double minValue) {
  12. this.minValue = minValue;
  13. }
  14. public void setMaxValue(double maxValue) {
  15. this.maxValue = maxValue;
  16. }



这个时候服务器的tomcat的server.xml配置 已经设置成 utf-8




jsp页面头部为

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme() + "://"
  5. + request.getServerName() + ":" + request.getServerPort()
  6. + path + "/";
  7. %>
  8. <%@taglib prefix="s" uri="/struts-tags"%>
  9.  
  10. <!DOCTYPE html>
  11. <html>
  12. <head>
  13. <base href="<%=basePath%>">
  14. <Meta charset="UTF-8">
  15. <title>gseInfo</title>
  16. <link type="text/css" rel="stylesheet" href="css/skin.css" />
  17. <link type="text/css" rel="stylesheet" href="css/genesBoxUI.css" />
  18. <script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>
  19. <script src="js/controls.js"></script>
  20. <script>
  21. document.createElement('header');
  22. document.createElement('nav');
  23. document.createElement('aside');
  24. document.createElement('section');
  25. </script>


这个时候发现 中文参数 乱码




解法一

解决办法

jsp中 getJson 中英文参数加上一次转码

encodeURI(geneName)

  1. $.getJSON("<%=basePath%>/query/searchCompareTable?geneName="+encodeURI(geneName)+"&fieldName="+encodeURI(fieldName)+"&minValue="+minValue+"&maxValue="+maxValue,function(datatable) {

action中不解码





解法二


解决办法

jsp中 getJson 中英文参数加上两次转码

encodeURI(encodeURI(geneName))

encodeURI(encodeURI(fieldName))

如下:

  1. $.getJSON("<%=basePath%>/query/searchCompareTable?geneName="+encodeURI(encodeURI(geneName))+"&fieldName="+encodeURI(encodeURI(fieldName))+"&minValue="+minValue+"&maxValue="+maxValue,function(datatable) {


action中解码

  1. compareResultHtml="";
  2. try {
  3. geneName=URLDecoder.decode(geneName,"utf-8");
  4. fieldName=URLDecoder.decode(fieldName,"utf-8");
  5. } catch (UnsupportedEncodingException e1) {
  6. e1.printStackTrace();
  7. }

猜你在找的Json相关文章