FusionCharts中setDataXML和setDataURL的区别

【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即为传的值

                        }

          }

});

你可能感兴趣的:(FusionCharts中setDataXML和setDataURL的区别)