ie8兼容性问题(七) js参数值中文情况下无法传到controller
来源:互联网 发布:我的世界蛤蟆吃网络id 编辑:程序博客网 时间:2024/06/05 19:32
项目中遇到这样一个问题,要实现一个下载功能,参数有两个,一个id,一个标题。其中标题是中文。
js写法: var params = {
"id": "0001",
"title": "需求响应速率概述"
}
window.open("downloadFilesController.do?download&id=" + params.id + "&title=" + params.title);
controller写法: @controller
@requestMapping("/downloadFilesController")
public class downloadFilesController{
@requestMapping(params = "download")
public void download(
HttpServeletRequest request,
HttpServletResponse response,
@RequestParam("id") String id,
@RequestParam("title") String title
) {
commonFileDownBizc.downloadFile(request, response, id, title);
}
}
这段代码在chrome中是没有问题的。但是在ie8中就会报错。原因是这样的。ie8中是不能通过get方法传递中文参数到controller的。所以需要在js中给中文参数进行转码,转为Unicode号,然后到controller中进行解码,再传递给biz层。
js写法: var params = {
"id": "0001",
"title": encodeURI(encodeURI("需求响应速率概述"))
}
window.open("downloadFilesController.do?download&id=" + params.id + "&title=" + params.title);
controller写法: @controller
@requestMapping("/downloadFilesController")
public class downloadFilesController{
@requestMapping(params = "download")
public void download(
HttpServeletRequest request,
HttpServletResponse response,
@RequestParam("id") String id,
@RequestParam("title") String title
) {
title = URLDecoder.decode(title, "utf-8");
commonFileDownBizc.downloadFile(request, response, id, title);
}
}
注意: 转码一定要两次转码。第一次将三字节的中文转为带%的单字节,第二次将%看做转义字符进行第二次转码。具体的网上有很多文献可以参考。
- ie8兼容性问题(七) js参数值中文情况下无法传到controller
- IE8下 js兼容性问题
- IE8下js对于replace()兼容性问题
- 中文参数传到后台乱码
- IE6和IE8下对js字符串截取函数substr兼容性问题
- BootStrap3 在IE8下的兼容性问题
- 解决IE8下的一些兼容性问题
- 解决IE8下的一些兼容性问题
- IE8 兼容性问题
- IE8兼容性问题
- video.js在IE8下无法正常播放
- 解决前台传到后台中文参数乱码
- 中文参数传到服务端乱码问题
- JSP中文传到Spring MVC controller乱码问题分析
- 前台JS赋值无法传到后台
- js中的中文传到jsp中乱码
- JS传到后台出现中文乱码解决办法
- 解决IE浏览器之间的兼容性问题 IE7.JS IE8.JS
- zendstiduo 背景色设置为护眼色
- Android Webview不使用默认浏览器
- 高通量数据
- 冒泡排序
- Spring事务管理(详解+实例)
- ie8兼容性问题(七) js参数值中文情况下无法传到controller
- hdu 5974 A Simple Math Problem
- ACL 2017自然语言处理精选论文
- 大数据领域三个大的技术方向资料
- OpenCV编程->求点集映射关系实现
- Maven
- 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字
- Qt学习使用(1)
- Java多线程编程学习chapter1