返回首頁
當前位置: 主頁 > 網絡編程 > Jsp實例教程 >

使用FusionCharts時出現的問題解決方案

時間:2012-10-10 23:00來源:知行網www.f1globe.com 編輯:麥田守望者

最近在用fusioncharts v3 來做報表
代碼如下

var myChart = new FusionCharts("fusioncharts/MSColumn2D.swf", "myChartId",
"900", "300", "0", "0");

u ="target.action?a=all&b=b";
u=u+"&c="+"c"+"&d="+"d";
myChart.setDataURL(u);
myChart.render("chartdiv");
在服務器端只能獲得到a=all,其他的參數,b,c,d都獲得不了,為什么?

A1.
FusionChart V3的方法chart.setDataURL(url)對特殊字符敏感,比如:?,&,還有日期格式中包含減號:2009-12-02,導致不能正常傳遞,而且沒有任何的錯誤提示。只是說加載數據錯誤(ERROR LOADING DATA)。

解決辦法:對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,"_");這表示替換全部的":";在服務器端可以再轉過去。

[例子如下:

javascript字符串替換所有要替換字符
javascript替換函數使用正則表達式

//將字母i全部替換成5

<script language="javascript">
var txt = "sjfisjfisdjfijsidfjioalfjewofjjgs";
alert(txt .replace(/i/g,"5"));
</script>

 

//只將第一個字母i替換成5

<script language="javascript">
var txt = "sjfisjfisdjfijsidfjioalfjewofjjgs";
alert(txt .replace("i","5"));
</script>

]

2。在java下,將“_”號替換成“:”。starttime.replaceAll("_",":");當然不替換也是可以的?茨銛祿䦷斓娜掌诟袷绞窃趺礃拥牧。

Q2。中文顯示問題。在要顯示圖的頁面引入js:

Report.jsp
 

<script language="javascript"
src="<%=request.getContextPath()%>/FusionCharts/FusionCharts.js"></script>

.....
 

<body>

<button onclick="newChart();" style="background-color: red">test</button>
<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 import="com.skyarm.mwc.dao.*"%>
<%@page import="com.skyarm.mwc.pojo.*"%>
<%@page import="com.skyarm.mwc.util.*"%>
<%@page import="java.util.*"%>
<%
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版的,被限制了。付費了就不會出現問題的!

------分隔線----------------------------
標簽(Tag):Java JAVA實例教程 JAVA基礎教程 Java源代碼 Java技巧
------分隔線----------------------------
推薦內容
猜你感興趣
99久久免费高清热精品