Ajax中get方式url传递中文参数乱码的解决
1. 在使用Ajax的时候使用url传递中文参数在控制器接收的数据是乱码,查了一下资料原因是:
JQuery默认的contentType:application/x-www-form-urlencoded,这才是JQuery正在乱码的原因,在未指定字符集的时候,是使用ISO-8859-1,ISO8859-1,通常叫做Latin-1,Latin-1包括了书写所有西方欧洲语言不可缺少的附加字符。JQuery的Ajax根本没有考虑到国际化的问题,使用了欧洲的字符集,所以才引起了传递中文出现乱码的问题。
大概的意思是Jquery中使用ISO8859-1编码,在控制器中使用UTF-8来进行解码所以导致了乱码的问题
2. 解决办法:
①在jsp页面中Ajax的url的中使用Jquery的encodeURI()方法可把字符串作为 URI 进行编码,encodeURL函数主要是来对URI来做转码,它默认是采用的UTF-8的编码,可以参看下面的例子:
$.ajax({
type : "GET",
url : encodeURI("${APP_PATH}/getAllMajorNameIDAccordingInstituteName?instituteName=" + instituteValue),
success : function(result){
$.each(result.map.allMajorNames, function(){
var option = $("<option></option>").append(this).attr("value", this);
option.appendTo("#add_major");
});
}
});
②在后台的控制器中使用utf-8的方式来进行解码:获取参数的时候参数的名字要与之前ajax中使用的参数名字要一样,使用HttpServletRequest来获取jsp页面中传递的参数值
@ResponseBody
@RequestMapping("/getAllMajorNameIDAccordingInstituteName")
public Object getAllMajorNameIDAccordingInstituteName(HttpServletRequest request) throws UnsupportedEncodingException{
String instituteName = new String(request.getParameter("instituteName").getBytes("ISO-8859-1"), "UTF-8");
AjaxResult result = new AjaxResult();
String instituteid = instituteService.queryInstituteNameByInstituteId(instituteName);
List<String> allMajorIDs = majorService.getAllMajorID(instituteid);
System.out.println(allMajorIDs);
List<String> allMajorNames = new ArrayList<String>();
for(int i = 0; i < allMajorIDs.size(); i++){
allMajorNames.add(majorService.queryMajorNameByMajorId(allMajorIDs.get(i)));
}
Map<String, Object> map = new HashMap<String, Object>();
map.put("allMajorNames", allMajorNames);
result.setMap(map);
result.setRes(true);
return result;
}
我们可以在控制台中打印出重新编码之后的参数的名字就知道中文的乱码有没有解决了
- 《微信小程序七日谈》- 第五天:你可能要在登录功能上花费大力气
- 《微信小程序七日谈》- 第六天:小程序devtool隐藏的秘密
- boi剖析 - 基于webpack的css sprites实现方案
- 深入JDK源码之ThreadLocal类
- 独家 | 一文读懂TensorFlow基础
- Webpack中hash与chunkhash的区别,以及js与css的hash指纹解耦方案
- RPC原理及实现
- RMI原理及实现
- webpack多页面开发与懒加载hash解决方案
- 前后端分离和模块化-58到家微信首页重构之路
- Node.js建站笔记-使用react和react-router取代Backbone
- 协同过滤推荐算法Java代码实现
- Nginx模块之Filter解析
- Nodejs建站笔记-注册登录流程的简单实现
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法