不是很明白lz的意思。你可以这样直接定义js数组<?
$ary = "['a','b','c']";
?>
<script language="javascript">
var a= <%=ary;%>
alert("rsList:"+a);
alert("a.length;"+a.length);
for (i=0;i<a.length;i++ )
{
alert("record:"+a[i]);
}
</script>

解决方案 »

  1.   

    先谢谢楼上的朋友,我的意思
    <% ArrayList recordList = new ArrayList();
       连接数据库,进行查询....返回结果集rs
       while(rs.next()){
       ArrayList record = new ArrayList();
       record.add(rs.getString(1));
       record.add(rs.getString(2));
       recordList.add(record);
    }
    %>这时候我希望在下面的js脚本里调用并遍历recordList
    <script language="javascript">
    var a= '<%=recordList%>'
    alert("recordList:"+a);  这里可以显示出所有的数据.
    alert("recordList.length;"+a.length); 这里显示就不对了,显示的是recordList里所有字符的个数,而我希望得到的是记录的个数
    for (i=0;i<a.length;i++ )
    {
    alert("record:"+a[i]); 这里输出的是undefined,我觉的是不是因为把a作为了一个String,输出length的时候就是看它的字符数,请问有什么办法可以解决吗?
    }
    </script>
      

  2.   

    <% String s = "[";   while(rs.next()){
       s += "[" + rs.getString(1)+","+rs.getString(2)+"]";
    }
    s+= "]";
    %><script language="javascript">
    var a= <%= s %>;
    alert("recordList:"+a.join());  这里可以显示出所有的数据.
    alert("recordList.length;"+a.length); 这里显示的是recordList里所有字符的个数
      

  3.   

    如果有StringBuilder,尽量使用StringBuilder而不是+=
      

  4.   

    <% String s = "[";   while(rs.next()){
       s += "[\"" + rs.getString(1)+"\",\""+rs.getString(2)+"\"]";
    }
    s+= "]";
    %><script language="javascript">
    var a= <%= s %>;
    alert("recordList:"+a.join());  这里可以显示出所有的数据.
    alert("recordList.length;"+a.length); 这里显示的是recordList里所有字符的个数
    alert(a[0][1]);//显示的是rs[0][1]
      

  5.   

    我试了下,a.join()不能显示,提示对象不支持该方法或属性,我想可能我的意思没表达清楚.
    我举个例子,大家再帮我看看.比如说recordList里存储的是多个人的信息,类似["aa",1,"bb"],["bb",2,"cc"]的集合,record里存的是某个人的信息,类似["aa",1,"bb"].我希望传递recordList这个集合变量,而不是字符串.但是现在我用js脚本接收的是时候是把recordList作为字符串了,所以打印recordList.length,得到的是所有字符的数量,打印每个记录的数据得到的都是空,而我希望得到的是record的个数.以及每个record里的具体的内容.
      

  6.   

    for (i  in a){
    ....
    }