如何将 JSP 中的 ResultSet 传递给 Javascript

Posted

技术标签:

【中文标题】如何将 JSP 中的 ResultSet 传递给 Javascript【英文标题】:How to Pass ResultSet in JSP to Javascript 【发布时间】:2016-04-07 14:22:58 【问题描述】:

我在尝试将我的 JSP 页面中的 ResultSet 传递给同一页面上的 javascript 部分时遇到问题。

我尝试了以下方法

ResultSet rs1 = st.executeQuery("SELECT * FROM Termine");
List<String> list1 = new ArrayList();
List<String> list2 = new ArrayList();
while(rs1.next())
    String veranName = rs1.getString(1);
    String terminid = rs1.getString(2); 
    list1.add(veranName);
    list2.add(terminid);


String jName = (new JSONArray(list1)).toString();
String jId = (new JSONArray(list2)).toString();

但是没有用。

我也尝试过使用 JQuery 之类的东西

$(document).ready(function()    
    var jIdArray = <%= jId %>
    $.each( jIdArray, function(i, l) 
        alert( "Index #" + i + ": " + l );
    );
);
$(document).ready(function()    
var jNameArray = <%= jName %>
$.each( jNameArray, function(i, l) 
    alert( "Index #" + i + ": " + l );
    );
);

这也不起作用。

JavaScript 函数:

function insertIntoTable()
var len = jIdArray.length;

for (i = 0; i < len; i++)
    var vname = jIdArray[i];
    var vid = jNameArray[i];
    document.getElementById(vid).innerhtml=vname;
 

有人看到我的错误或对我的问题有更好的解决方案吗?

【问题讨论】:

【参考方案1】:

您可以使用这种方式准备 JavaScript 数组:

<script>

var jIdArray = new Array(

<%
   out.print("\"" + list2.get(0) + "\"");
   for(int i = 1; i < list2.size(); i++) 
      out.print(", \"" + list2.get(i) + "\"");

%>
)

var jNameArray = new Array(

<%
   out.print("\"" + list1.get(0) + "\"");
   for(int j = 1; j < list1.size(); j++) 
      out.print(", \"" + list1.get(j) + "\"");

%>
)

// work with JavaScript arrays here

</script>

更新。不确定你想做什么,但如果你在服务器端正确准备了 JavaScript 数组(如上所示),这是一个工作示例。

var jIdArray = new Array("value1", "value2");
var jNameArray = new Array("value3", "value4");

$(document).ready(function()        
    $.each(jIdArray, function(i, l)  
      alert( "Index #" + i + ": " + l );
    );

    $.each(jNameArray, function(i, l)  
      alert( "Index #" + i + ": " + l);
    );
);

jsfiddle 在这里。

【讨论】:

如果我在使用您的代码之前对我的数组进行 syso,我会得到: ["value1","value2"] 您的代码是做什么的? JavaScript不能用这种Array吗? 我知道,但我无法将我的 java 数组传递给 javascript。 问题是:我已经在 J​​ava 代码中获得了我的 ResultSet,这意味着它正在服务器端执行。如果我尝试在我的 Javascript 代码中使用它,它就不起作用。因为 Javascript 部分甚至找不到数组。您所做的只是在 Javascript 中定义它们并在那里使用它们。但是我在 Java 部分中用我的 ResultSet 定义了它们,并尝试在 Javascript 中使用它。感谢您的努力

以上是关于如何将 JSP 中的 ResultSet 传递给 Javascript的主要内容,如果未能解决你的问题,请参考以下文章

如何将 ArrayList 从 Java 类传递给 jsp

如何将 Struts 2 动作类中的 InputStream 值传递给 JSP 页面中的 Ajax 并将该值转换为 JSON 数组

如何将数据目标ID传递给另一个jsp引导程序

如何将参数从JSP传递给Struts 2动作

如何将新标头传递给 sendRedirect

将参数从jsp页面传递给java类而不使用servlet [重复]