我想将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
最佳答案
您应该在字符串周围添加"
,也应该对它进行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 %>"
)前后加引号。