比如说我在js中var s1= "<%=CC(0)%>";   //取的是第一个值,cc(int i)是后台连接数据库取值的函数
var s2 = "<%=CC(1)%>";  //取的是第二个值这样的话后台添加一条数据就要在前台js中取一次值需要在 js 中使用 si 的值
我想一次都取出数据,怎么取呢,我试了用 "<%=CC(i)%>"取值是错的

解决方案 »

  1.   

    <script>
    <%
    for(int i=0;i<len;i++){
      out.print("eval(s"+i+")="+cc(i));
    }
    %>
    </script>大概就这样吧。
      

  2.   

    是想一次取出所有数据吗?如果是这样的话:  在action里面保存在request里,
      在JSP中,用struts标签 <logic:iterate> 如果要在JS中的话,
    也可以  var list = <%request.getAttribute("list")%> 取值~~
    试一下把~
      

  3.   


    我现在是在一个页面中的,
    实现的是一个甘特图,需要从数据库中把每条数据取出,一一插入甘特图中,使用
      var startTime1 = "<%=ganttS(0,1)%>"; //ganttS(0,1)可以取出第一条数据的第一个参数
      var endTime1 = "<%=ganttS(0,2)%>";
      var projectName1 = "<%=ganttS(0,3)%>";
      var leaderName1 = "<%=ganttS(0,4)%>";
      var percentage1 = "<%=ganttS(0,5)%>";
      var g = new Gantt(document.all.GanttChart);
      g.AddTaskDetail(new Task(startTime1, endTime1, projectName1, leaderName1,percentage1));
    可以插入一条数据,
    如果有N条数据那不是很麻烦,而且数据库中插入一条数据也要在前台写一条进去,
    现在不知道在JS中如何可以定义startTime ,endTime ,projectName ,leaderName ,percentage ,使得可以在ganttS()中传入两个参数,如ganttS(i,j),而不是固定的数,
    这样就可以
    g.AddTaskDetail(new Task(startTime, endTime, projectName, leaderName, percentage));
    只写一句话了还是有另外的办法实现?
      

  4.   

    <%FOR循环开始%>
        循环体
    <%循环结束%>
    循环体内可以添加写入JAVASCRIPT,
        <% 
            for (int i=0;i<dt.Rows.Count;i++)
            {
                for (int j=0;j<dt.Columns.Count;j++)
                { %>
                    $(arr['<%=i+1 %>']['<%=j %>']).text('<%=dt.Rows[i][j].ToString() %>');
              <% }
            }
        %>
        
        //画个表头 
         <% for(int h=0;h<dt.Columns.Count;h++) { %>
            $(arr[0]['<%=h %>']).text('<%= dt.Columns[h].ColumnName%>');
         <% } %>    
      

  5.   

    非常感谢上面几位的帮助,虽然用你们的方法没有试成功。
    我用自己的方法成功了,在JS中用ArrayList 取值,然后用了个for循环就OK了。
    原来的方法是在后台用Arraylist取值,然后再传到前台JS中,用这种方法在js中循环就很麻烦,没有试成功
    结贴