【FusionCharts中setDataXML和setDataURL的區(qū)別】
setDataXML()方法中萎庭,中間是一段xml代碼
setDataURL()括號(hào)中是xml文件的url路徑
1修赞、字符長(zhǎng)度區(qū)別
在使用get方式得到參數(shù)時(shí)配深,瀏覽器對(duì)參數(shù)值得長(zhǎng)度是有一定的限制的丑搔,所以如果xml字符過(guò)長(zhǎng),可能會(huì)產(chǎn)生問(wèn)題蛋辈。這個(gè)時(shí)候就需要使用setDataURL()方法瑟慈;
2、雙字節(jié)(中文字符)區(qū)別
如果xml字符里含有雙字節(jié)字符仔雷,例如中文字符蹂析,你就不能使用setDataXML()方法,而要使用setDataURL()
最佳模式:在我們的實(shí)際應(yīng)用當(dāng)中碟婆,數(shù)據(jù)不可能是靜態(tài)的电抚,可能是有用戶選擇查詢條件,然后提交給服務(wù)器竖共,服務(wù)器返回一個(gè)查詢的結(jié)果蝙叛,比如search.jsp?year=2008。所以推薦的最佳模式是使用setDataURL()方法公给,并且使用javascript加載圖形借帘。
注意:在使用setDataURL()方法時(shí)蜘渣,如果地址里含有“?”肺然、“&”等字符蔫缸,你就需要對(duì)這個(gè)地址進(jìn)行URL編碼,在js里進(jìn)行編碼际起,使用escape(url)這個(gè)函數(shù)拾碌,如果你想在服務(wù)器進(jìn)行編碼,那就要使用你所用的編程語(yǔ)言進(jìn)行編碼街望,比如java校翔,則使用編碼的類方法是:java.net.URLEncoder.encode()。
【使用request前后臺(tái)傳值】
后臺(tái)生成字符串? 以為Java為例? :將DOM4j生成好的字符串發(fā)送前臺(tái):
request.setAttribute("xmlStr",xmlStr);
前臺(tái)讀取方式如下:
var chart = new FusionCharts("${pageContext.request.contextPath}/Charts/MSColumn3DLineDY.swf", "0", "800", "350");
//chart.setDataURL("${pageContext.request.contextPath}/xml/Column3D.xml");
chart.setDataXML("${xmlStr}");
chart.render('chartDiv');
【action向$.ajax()傳值】
//Action中:
PrintWriter pw = response.getWriter();
pw.write(“要傳的值”);
pw.flush();
//js中:
$.ajax({
????????? url : "ylcgtjQuery!getYuzhiset.action",
????????? type : "POST",
?? ? ???? data: "selYear="+selYear+"&selMonth="+selMonth,
???? ? ?? dataType : "text",
????? ? ? success : function(result) {
????????????????????? if (result != null) {
?????????????????????????????? //result即為傳的值
??????????????????????? }
????????? }
});