【FusionCharts中setDataXML和setDataURL的区别】
setDataXML()方法中,中间是一段xml代码
setDataURL()括号中是xml文件的url路径
1、字符长度区别
在使用get方式得到参数时,浏览器对参数值得长度是有一定的限制的,所以如果xml字符过长,可能会产生问题。这个时候就需要使用setDataURL()方法;
2、双字节(中文字符)区别
如果xml字符里含有双字节字符,例如中文字符,你就不能使用setDataXML()方法,而要使用setDataURL()
最佳模式:在我们的实际应用当中,数据不可能是静态的,可能是有用户选择查询条件,然后提交给服务器,服务器返回一个查询的结果,比如search.jsp?year=2008。所以推荐的最佳模式是使用setDataURL()方法,并且使用javascript加载图形。
注意:在使用setDataURL()方法时,如果地址里含有“?”、“&”等字符,你就需要对这个地址进行URL编码,在js里进行编码,使用escape(url)这个函数,如果你想在服务器进行编码,那就要使用你所用的编程语言进行编码,比如java,则使用编码的类方法是:java.net.URLEncoder.encode()。
【使用request前后台传值】
后台生成字符串 以为Java为例 :将DOM4j生成好的字符串发送前台:
request.setAttribute("xmlStr",xmlStr);
前台读取方式如下:
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即为传的值
}
}
});