我想将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 %>")前后加引号。

07-24 16:29