Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数据传递到javascript图表_Javascript_Jsp - Fatal编程技术网

将数据传递到javascript图表

将数据传递到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

我正在将一个列表从服务器传递到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.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标签中。是的,我也这么做了,就像这样