【问题标题】:How to Pass ResultSet in JSP to Javascript如何将 JSP 中的 ResultSet 传递给 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;
 }
}

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

【问题讨论】:

    标签: javascript java jquery json jsp


    【解决方案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 中使用它。感谢您的努力
    猜你喜欢
    • 2010-12-16
    • 2015-01-18
    • 2014-01-17
    • 2011-08-07
    • 2012-03-18
    • 2014-01-07
    • 2018-05-03
    • 2016-08-19
    相关资源
    最近更新 更多