将数据传递到javascript图表
我正在将一个列表从服务器传递到jsp,如下所示将数据传递到javascript图表,javascript,jsp,Javascript,Jsp,我正在将一个列表从服务器传递到jsp,如下所示 <c:forEach items="${query}" var="u"> <p>${u.date} ${u.count}</p> </c:forEach> ${u.date}${u.count} 我使用javascript中的一个数组来保存查询对象,然后将该数组传递给数据点,如下所示: <script type="text/javascript"> window.o
<c:forEach items="${query}" var="u"> <p>${u.date} ${u.count}</p> </c:forEach>
${u.date}${u.count}
我使用javascript中的一个数组来保存查询对象,然后将该数组传递给数据点,如下所示:
<script type="text/javascript">
window.onload = function () {
var arr = new Array();
<c:forEach items="${query}" var="u" varStatus="status">
var cnt= '${u.count}';
if(cnt=="")
arr.push( '{' + 'x' + ':' + '${u.date}'+ ',' + 'y' + ':' +'0' + '}' + ',');
else
arr.push( '{' + 'x' + ':' + '${u.date}'+ ',' + 'y' + ':' +'${u.count}' + '}' + ',');
</c:forEach>
var arrayLength = arr.length;
for (var i = 0; i < arrayLength; i++) {
alert(' '+arr[i]);
}
var chart = new CanvasJS.Chart("chartContainer",
{
title:{
text: "Earthquakes - per month"
},
data: [
{
type: "line",
dataPoints: [
arr
]
}
]
});
chart.render();
}
</script>
window.onload=函数(){
var arr=新数组();
var cnt='${u.count}';
如果(cnt==“”)
arr.push('{'+'x'+':'+'${u.date}'+','+'y'+':'+'0'+'}'+',');
其他的
arr.push('{'+'x'+':'+'${u.date}'+','+'y'+':'+'${u.count}'+',');
var arrayLength=阵列长度;
对于(变量i=0;i
但是图形没有显示传递给arr的数据。您需要在任何可用作用域上设置一个属性,使对象可以通过表达式语言访问,然后在页面中需要的任何地方使用EL构造。 请试试这个:
<%
List query = new ArrayList();
HashMap sampleObj = new HashMap();
sampleObj.put("date", "2015");
sampleObj.put("count", 145);
query.add(sampleObj);
query.add(sampleObj);
query.add(sampleObj);
pageContext.setAttribute("query",query);
System.out.println("Len : "+query.size());
%>
...
<script>
var chartObj = {
title: {
text: "Earthquakes - per month"
},
data: [
{
type: "line",
dataPoints: [
<c:forEach items="${query}" var="u" varStatus="statusVar">
<c:if test="${ statusVar.index > 0 }">
<c:out value="," />
</c:if>
<c:out value="{ x : ${u.date}, y: ${u.count} }" />
</c:forEach>
]
}
]
};
alert(JSON.stringify(obj));
var chart = new CanvasJS.Chart("chartContainer", chartObj);
chart.render();
</script>
...
var chartObj={
标题:{
正文:“地震-每月”
},
数据:[
{
键入:“行”,
数据点:[
]
}
]
};
警报(JSON.stringify(obj));
var chart=new CanvasJS.chart(“chartContainer”,chartObj);
chart.render();
谢谢,但数据点内部似乎没有任何操作真正起作用。我在javascript中制作了一些版本来创建一个数据数组并将其传递给数据点。但是图形仍然没有显示。您需要将对象设置为页面(或会话或应用程序,如果合适)上的属性,以便通过表达式语言使用它。上面的代码对我很有用。要将对象设置为属性,我尝试了你的建议,也得到了图形,但这次缺少了点。你能不能给我看一下你工作过的完整的jsp页面(或者创建一个页面的超链接),这将对我有很大帮助。非常感谢。在scriptlet标签中。是的,我也这么做了,就像这样