首页 > Web开发 > 详细

Web报表页面如何传递中文参数

时间:2015-08-19 02:29:24      阅读:289      评论:0      收藏:0      [点我收藏+]

?

1、场景描述

在用报表开发工具FineReport设计的web报表中,给iframe设置src嵌入某个报表时,往往会给报表传递初始的参数值,例如:

?

<iframe?id="reportFrame"?width="900"?height="400"?src="/WebReport/ReportServer?reportlet=/report.cpt&参数1=参数值&参数2=参数值..."></iframe>??

若参数名称、参数值甚至报表名称中包含中文或者特殊字符时,如果不进行编码转换,可能会出现一系列问题。比如下图:


bubuko.com,布布扣
?

?

今天我就来讲讲该如何如何传递中文参数。

2、使用cjkEncode对中文进行编码转换

使用cjkEncode对调用报表的路径或参数进行编码,报表获取到参数后会自动进行解码,保证不会出现乱码等一系列情况。

cjkEncode是FR内部封装好的编码方法,在js中使用cjkEncode有两种方式,该节我们举例介绍。

2.1加载finereport.js使用cjkEncode

cjkEncode方法在FineReport的JS库中已经预先提供了,用户可以在自己的网页中引入FineReport的JS库,就可以使用FR.cjkEncode对中日韩文字符进行编码,如下对调用报表的url进行cjkEncode:

1.????? <html>????

2.????? ??<head>????

3.????? ??<title>FineReport?Demo</title>????

4.????? ??<meta?http-equiv="Content-Type"?content="text/html;?charset=GBK"?/>????

5.????? ??<script?type="text/javascript"?src="/WebReport/ReportServer?op=emb&resource=finereport.js"></script>??

6.????? ??<script?language="javascript">??

7.????? ????function?autoLoad(){??

8.????? ??????var?addr?=?FR.cjkEncode("/WebReport/ReportServer?reportlet=/doc/Primary/Parameter/Parameter.cpt&地区=华东");??

9.????? ??????document.getElementById("reportFrame").src?=?addr;??

10.? ????}??

11.? ????window.onload?=?autoLoad;???

12.? ??</script>??

13.? ??</head>????

14.? ??<body>????

15.? ????<iframe?id="reportFrame"?width="900"?height="400"?></iframe>????

16.? ??</body>??

17.? </html>??

finereport.js使用的是jquery框架,若用户也使用了jquery,可能会造成冲突,这时建议不要引入finereport.js,而是将cjkEncode方法拷贝到页面中直接使用,详见下面的方法。

已完成示例请参照%FR_HOME%\WebReport|page_demo\parameter_ch.html

2.2直接调用cjkEncode

加载finereport.js再引用cjkEncode,一方面可能会引起js冲突,另一方面也加载了很多不必要的方法。

若用户只需要使用该方法,可以将cjkEncode实现的代码复制到网页中或者用户自己的js文件中,然后再引用cjkEncode。

1.?????<html>??

2.???????<head>????

3.???????<title>FineReport?Demo</title>????

4.???????<meta?http-equiv="Content-Type"?content="text/html;?charset=GBK"?/>????

5.???????<script?type="text/javascript">??

6.?????????//cjkEncode方法的实现代码,放在网页head中或者用户自己的js文件中??

7.?????????function?cjkEncode(text)?{????????????????????????????????????????????????????????????????????????????

8.???????????if?(text?==?null)?{?????????

9.?????????????return?"";?????????

10.? ??????}?????????

11.? ??????var?newText?=?"";?????????

12.? ??????for?(var?i?=?0;?i?<?text.length;?i++)?{?????????

13.? ????????var?code?=?text.charCodeAt?(i);??????????

14.? ????????if?(code?>=?128?||?code?==?91?||?code?==?93)?{??//91?is?"[",?93?is?"]".?????????

15.? ??????????newText?+=?"["?+?code.toString(16)?+?"]";?????????

16.? ????????}?else?{?????????

17.? ??????????newText?+=?text.charAt(i);?????????

18.? ????????}?????????

19.? ??????}?????????

20.? ??????return?newText;?????????

21.? ????}?????

?

?

?

?

Web报表页面如何传递中文参数

原文:http://504479728.iteye.com/blog/2236183

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!