【问题标题】:How to store a mysql string in a javascript variable using jsp如何使用jsp将mysql字符串存储在javascript变量中
【发布时间】:2015-08-09 23:14:16
【问题描述】:

我想将 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

【问题讨论】:

  • 查看您生成的代码。为什么你认为这应该有效?你需要在输出 JS 之前转义你的字符串。
  • @SLaks:找不到你。我是菜鸟。
  • 尝试加引号,name.push("&lt;%=s%&gt;")
  • name.push(tcs); 不是有效的 Javascript(您没有 tcs 变量)
  • 如果名称包含" 或反斜杠怎么办?

标签: javascript mysql jsp


【解决方案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" 或在您的情况下为 "&lt;%= s %&gt;"

【讨论】:

  • 谢谢。我尝试添加",例如'"'+&lt;%= s %&gt;+'"'。它显示了同样的错误。那就是你我决定在这里发布一个问题。即使在我用谷歌搜索后,我也没有得到我想要的东西。
  • @Ramvignesh 不要添加 '"'+ 只是 " 完全按照我的答案来做......
  • @Ramvignesh name.push("&lt;%= s %&gt;"); 完全一样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-27
  • 1970-01-01
  • 1970-01-01
  • 2015-02-05
  • 1970-01-01
相关资源
最近更新 更多