历史版本14 :Web传递中文参数 返回文档
编辑时间:
内容长度:图片数:目录数:
修改原因:
1. 问题描述编辑
给iframe设置src嵌入某个报表时,往往会给报表传递初始的参数值,例如:
<iframe id="reportFrame" width="900" height="400" src="/webroot/decision/view/report?viewlet=/report.cpt&参数1=参数值&参数2=参数值..."></iframe>
若参数名称、参数值甚至报表名称中包含中文或者特殊字符时,如果不进行编码转换,可能会出现一系列问题,如找不到模板文件等,如下。
那么如何实现带中文的报表正确传参呢
2. 实现思路编辑
在给报表服务器发送请求之前,使用Javascript先对URL编码,然后再向服务器提交。避免了不同的操作系统、不同的浏览器、不同的网页字符集,导致完全不同的编码结果。因为Javascript的输出总是一致的,所以就保证了服务器得到的数据是格式统一的。
对URL中的中文,包含模板名、参数名字和参数值,进行encodeURIComponent()编码。
3. 实现方法编辑
完整代码如下:
<html>
<head>
<title>FineReport Demo</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script language="javascript">
function autoLoad(){
var addr = "/webroot/decision/view/report?viewlet=GettingStarted.cpt&"+encodeURIComponent("地区")+"="+encodeURIComponent("华东");
document.getElementById("reportFrame").src = addr;
}
window.onload = autoLoad;
</script>
</head>
<body>
<iframe id="reportFrame" width="900" height="400" ></iframe>
</body>
</html>
注:不支持【UTF-8无BOM】的编码格式。