我想将mysql字符串存储在javascript数组变量中。我在服务器端使用jsp。
我试过三种方式。这三个都不起作用。需要一些帮助。
尝试-1
<script>
var name = [];
<%
st=con.prepareStatement("select name from company");
rs=st.executeQuery();
while(rs.next()){
String s = rs.getString(1);
%>
name.push(<%=s%>);
<%
}
%>
</script>
尝试-2
<script>
var name = [];
<%
st=con.prepareStatement("select name from company");
rs=st.executeQuery();
while(rs.next()){
%>
name.push(<%=rs.getString(1)%>);
<%
}
%>
</script>
尝试-3
<script>
var name = [];
<%
st=con.prepareStatement("select name from company");
rs=st.executeQuery();
while(rs.next()){
%>
name.push(<%out.print(rs.getString(1));%>);
<%
}
%>
</script>
处理后,所有三次尝试都显示相同的结果和错误。
解释代码:
<script>
var name = [];
name.push(tcs);
name.push(wipro);
</script>
错误:
ReferenceError: tcs is not defined
答案 0 :(得分:1)
你应该在你的字符串周围添加"
你应该javascript编码它(我认为apache有一个库可以为你做这个):
<script>
var name = [];
<%
st=con.prepareStatement("select name from company");
rs=st.executeQuery();
while(rs.next()){
String s = StringEscapeUtils.escapeJavaScript(rs.getString(1));
%>
name.push("<%= s %>");
<%
}
%>
</script>
尝试使用此Apache库来基于javascript规则转义java字符串:StringEscapeUtils
Javascript正试图将name.push(tcs);
tcs
解释为一个变量,在这种情况下tcs
尚未声明或初始化它未定义。相反,您希望javascript将tcs
解释为字符串,因此您需要围绕它"tcs"
或在您的案例中"<%= s %>"
引用。