帮忙解决JAVA 关于二维数组传值到JS

本人是新手,可能是提问题,并没有提供全面的信息,如果需要的话,请提出,我会完善的!
首先,我使用的是hibernate+struts
首先我从数据库提取数据如下:
在.JSP中

<%
int emp_id=(Integer)session.getAttribute("emp_id");
IoGoodsBs iobs= new IoGoodsBs();
List list= null;
int ioless=1;
list=iobs.queryIoGoodsByIoless(emp_id,ioless);
int size=list.size();

  String[][] li= new String[size][2];      
     for(int i=0;i<list.size();i++) 
   { 
     IoGoods iogs=(IoGoods)list.get(i); 
      li[i][0]=iogs.getGoodsname(); 
      li[i][1]=String.valueOf(iogs.getQuantity());  // iogs.getQuantity()是INT 类型的.  

   } 

%>

本人想将 li 这个二维数组传值进下面的JS中的, myDate中,请问,应该怎么做.才能让我取得的二维数组li同JS中myDate一样.
JS如下:

var myData = new Array(['U.S.A.', 69.5], ['Canada', 2.8], ['Japan & SE.Asia', 5.6], ['Aus. & NZ.', 2.8], ['E.U.', 14.6], ['Others Europe', 2.7], ['Others', 1.9],['wwei',1.2]); var colors = ['#FA5E1F', '#FDCB3F', '#71D743', '#D23333', '#BAE73F', '#AB7B55', '#B381C9']; var myChart = new JSChart('graph', 'bar'); myChart.setDataArray(myData); myChart.colorizeBars(colors); myChart.setTitle('Host distribution per macroareas'); myChart.setTitleColor('#8E8E8E'); myChart.setAxisNameX('Region'); myChart.setAxisNameY('%'); myChart.setAxisColor('#c6c6c6'); myChart.setAxisWidth(1); myChart.setAxisNameColor('#9a9a9a'); myChart.setAxisValuesColor('#939393'); myChart.setAxisPaddingTop(60); myChart.setAxisPaddingLeft(50); myChart.setAxisPaddingBottom(60); myChart.setTextPaddingBottom(20); myChart.setTextPaddingLeft(15); myChart.setTitleFontSize(11); myChart.setBarBorderWidth(0); myChart.setBarSpacingRatio(50); myChart.setBarValuesColor('#737373'); myChart.setGrid(false); myChart.setSize(616, 321); myChart.setBackgroundImage('chart_bg.jpg'); myChart.draw();

感谢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

4个回答

把这部分代码改掉
用List

[color=red]List li = new ArrayList();

for(int i=0;i<list.size();i++)
{
IoGoods iogs=(IoGoods)list.get(i);
List temp = new ArrayList();
temp.add(iogs.getGoodsname());
temp.add(iogs.getQuantity());
li.add(temp);

   }[/color] 

用json是一个不错的选择,可以看一下json的格式后台传过来就行了!

1、首先将你的2维数组放到request的中如:reqeust.setAttribute("result",li);
2、在jsp页面中从request中取出,如下:
<%

String[][] result = (String[][])request.getAttribute("result");

%>
[code="javascript"]
var myData = new Array();

<%for(int i=0;i

myData[<%=i%>][0] = <%=result[i][0]%>;

myData[<%=i%>][1] = <%=result[i][1]%>;

<%}%>

[/code]

这样就可以给你的js的二维数组赋值了。

这个就是把java中的数组转换成json字符串传给js就能解析,

看看这个工具框架,java 和 json之间的转换
把这个包下载下来加到工程。地址:http://sourceforge.net/projects/stringtree

在.JSP中
jsp中导入 import org.stringtree.json.JSONWriter;

<%
int emp_id=(Integer)session.getAttribute("emp_id");
IoGoodsBs iobs= new IoGoodsBs();
List list= null;
int ioless=1;
list=iobs.queryIoGoodsByIoless(emp_id,ioless);
int size=list.size();

  String[][] li= new String[size][2];      
     for(int i=0;i<list.size();i++) 
   { 
     IoGoods iogs=(IoGoods)list.get(i); 
      li[i][0]=iogs.getGoodsname(); 
      li[i][1]=String.valueOf(iogs.getQuantity());  // iogs.getQuantity()是INT 类型的.  

   } 
   JSONWriter writer = new JSONWriter();
   String jsonStr = writer.write(li);

%>

本人想将 li 这个二维数组传值进下面的JS中的, myDate中,请问,应该怎么做.才能让我取得的二维数组li同JS中myDate一样.
JS如下:

var myData = <%=jsonStr %>; var colors = ['#FA5E1F', '#FDCB3F', '#71D743', '#D23333', '#BAE73F', '#AB7B55', '#B381C9']; var myChart = new JSChart('graph', 'bar'); myChart.setDataArray(myData); myChart.colorizeBars(colors); myChart.setTitle('Host distribution per macroareas'); myChart.setTitleColor('#8E8E8E'); myChart.setAxisNameX('Region'); myChart.setAxisNameY('%'); myChart.setAxisColor('#c6c6c6'); myChart.setAxisWidth(1); myChart.setAxisNameColor('#9a9a9a'); myChart.setAxisValuesColor('#939393'); myChart.setAxisPaddingTop(60); myChart.setAxisPaddingLeft(50); myChart.setAxisPaddingBottom(60); myChart.setTextPaddingBottom(20); myChart.setTextPaddingLeft(15); myChart.setTitleFontSize(11); myChart.setBarBorderWidth(0); myChart.setBarSpacingRatio(50); myChart.setBarValuesColor('#737373'); myChart.setGrid(false); myChart.setSize(616, 321); myChart.setBackgroundImage('chart_bg.jpg'); myChart.draw();
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐