代码如下
var myChart = new FusionCharts("fusioncharts/MSColumn2D.swf", "myChartId",
"900", "300", "0", "0");
u ="target.act
u=u+"&c="+"c"+"&d="+"d";
myChart.setDataURL(u);
myChart.render("chartdiv");
在服务器端只能获得到a=all,其他的参数,b,c,d都获得不了,为什么?
A1.FusionChartV3的方法chart.setDataURL(url)对特殊字符敏感,比如:?,&,还有日期格式中包含减号:2009-12-02,导致不能正常传递,而且没有任何的错误提示。只是说加载数据错误(ERROR LOADING DA
解决办法:对url进行处理——
1。在JS下,可以用escape方法来转换。chart.setDataURL(escape(url)).
2。在服务器端处理,如果你想在服务器端就进行编码,那就使用你的编程语言提供的URL编码方法。如在java里进行编码的函数是java.net.URLEncoder.encode()。
另外:FusionChart对于时间的:(冒号,如 2010-02-24 23:59:59)不能转换,当时一直没有找到问题。没有报错或者报时间应该在-4444到9999之间。之前一直以为是空格的问题,后来才发现是冒号的问题!
办法:1,在js下,将":"号替换成"_"。比如说变量为starttime,starttime.replace(/:/g,"_");这表示替换全部的":";在服务器端可以再转过去。
[例子如下:
javas
javas
//将字母i全部替换成5
<script language="javas
var txt = "sjfisjfisdjfijsidfjioalfjewofjjgs";
alert(txt .replace(/i/g,"5"));
</script>
//只将第一个字母i替换成5
<script language="javas
var txt = "sjfisjfisdjfijsidfjioalfjewofjjgs";
alert(txt .replace("i","5"));
</script>
]
2。在java下,将“_”号替换成“:”。starttime.replaceAll("_",":");当然不替换也是可以的。看你数据库的日期格式是怎么样的了。
Q2。中文显示问题。在要显示图的页面引入js:
Report.jsp
<script language="javas
src="<%=request.getContextPath()%>/FusionCharts/FusionCharts.js"></script>
.....
<body>
<button on
<div id="chartdiv" >
</div>
</body>
.....
//显示柱状图
function newChart(){
var phone =document.getElementById("PHONE").value;
if(phone.trim().length==11){
phone = phone.trim();
var starttime = document.getElementById("STARTTIME").value;
var endtime = document.getElementById("ENDTIME").value;
var chart = new FusionCharts("<%=request.getContextPath()%>/FusionCharts/FCF_Column3D.swf","ItemCharts","1000","500");//将swf文件拷贝到FusionCharts下
//不能处理:号...
starttime = starttime.replace(/:/g,"_");
endtime = endtime.replace(/:/g,"_");
var url = "behaviorchart.jsp?phone="+phone+"&starttime="+starttime+"&endtime="+endtime;
//alert(url);
chart.setDataURL(escape(url));
chart.render("chartdiv");
}else{
Dialog.alert("柱状图只能显示一个号码的数据!请输入确切的号码!");
}
}
behaviorchart.jsp:
<%@page pageEncoding="gbk"%>
<%@page imp
<%@page imp
<%@page imp
<%@page imp
<%
out.clear();
//参数
String phone = request.getParameter("phone");
String starttime = request.getParameter("starttime");
String endtime = request.getParameter("endtime");
//换过来成:号
starttime=starttime.replaceAll("_",":");
endtime=endtime.replaceAll("_",":");
StringBuffer sb = new StringBuffer();
。。。
拼接成xml的文档。
out.println(sb.toString());
out.flush();
%>
A2。xml返回的有中文的话不能显示,都显示为乱码。将behaviorchart.jsp的pageEncoding设置为gbk,页面的属性也设置为GBK就可以正确的显示了。
Q3。拼成的xml文档中有:
<graph caption='..' ... yAxisName=‘点击次数’ ... >
<set name='..' value='...' ..../>
....
</graph>
结果y轴的名称不显示出来。。。
A3。这个问题比较简单了,我用的Free版的,被限制了。付费了就不会出现问题的!