jsp中一个java的字符串数组如何传值给javascript????? 急
[color=red]<%
String[] sa={"aaa1","aaaa2"};
%>
<br> var names = <%=sa%>;<br> .....[/color]<br> 如上面描述。我想把字符串数组传给javascriipt 得不到值啊。。</p> <p>但是光用String 就可以。<br> <% <br> String str="aaa";<br> %><br> <SCRIPT language=JavaScript type=text/JavaScript><br> var name = "<%=str%>";<br> .....<br> 清大家帮忙啊</p>
你那种形式只是把数组的toString()的值传给了javascript的name.页数组的toString()返回的只是哈希值.如java.lang.String;@360be0这种形式的.所以javascript中获取不到,还会报错.
在<%%>中.
先将[code="java"]String[] arr={"valueA","valueB","valueC"};[/code]中的arr转换为如下的字符串的形式:[code="js"]["valueA","valueB","value"][/code]
在javascript中用:
var names = <%=sa%>;
就可以获取到java中那个数组的值了.
[code="java"]var names = <%=sa%>;[/code]这名话有问题.改成:
[code="java"]var names = "<%=sa%>";[/code]会打出这个变量(注意: 加了引号)或者:[code="java"]var names = "<%=sa[0]%>";[/code]会打出sa数组的第一个元素.如果想想直接传递数组, 可能要主动的将数组转化成js的数组, 也就是把String[] sa={"aaa1","aaaa2"};转化成['aaa1', 'aaa2']的形式, 然后把这个字符串用上面方式赋给names
貌似只能用叠代往里面传, 因为代表字符串的引号无法传日, 会造成缺少对象错误
你还是老老实实的一个元素一个元素往里面丢吧
[code="java"]
var names = [];
<%
String[] sa={"aaa1","aaaa2"};
for(int i = 0,len = sa.length; i < len;i++) {
%>
names[i] = <%=sa[i]%>;
<%
}
%>
[/code]