从Servlet到Jquery的Array数组

时间:2013-04-17 16:39:19

标签: javascript jquery servlets web-applications gson

我正在尝试让servlet将一个数组数组返回到我的javascript jquery代码中。我遇到的问题是,如果我想在jQuery中拥有一个数组数组,我必须说

var derpArray[0] = new array();

这引起了一个问题,因为我可能不知道我将从服务器返回多少行。目前我正在尝试让我的servlet返回一个数组数组,分配给一个javascript变量,然后从值中创建一个表。任何提示将不胜感激。

以下是我的代码:

Java Servlet:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    String[][] sourceFiles = null;
    System.out.println("PING");

    try{
        sourceFiles = WebAppDB2Connector.getTopRows(5);
    }
    catch (Exception e)
    {
        SimpleLogger.logInfo("Error retrieving data..." + e.getMessage());
    }

    Gson gson = new Gson();
    String json = gson.toJson(sourceFiles);
    response.setContentType("application/json");
    response.setCharacterEncoding("UTF-8");
    response.getWriter().write(json);

    System.out.println("end");


}

JavaScript的:

window.onload = load;

function load(){

$.getJSON("http://localhost:9194/MyWebApplication/SourceFile", function(sourceFileData) {

var table = $("<table></table>");
for (var i = 0; i < sourceFileData.length; i++) 
{
    var line = $("<tr></tr>");
    for (var j = 0; j < sourceFileData[i].length; j++)
    {
        line.append( $(cell).html('<td>' + sourceFileData[i][j] + '</td>'));
    }
    table.append(line);
}

table.appendTo( $("#sourceFileTable"));

});

document.getElementById("test").innerHTML = "LOL";

}

1 个答案:

答案 0 :(得分:1)

OP添加servlet代码后

编辑

我怀疑你的servlet会起作用。如果是,那将是coincidence。您可能需要某种JSON库来与您的servlet一起使用。 json.org/提供了一个简单的JSON库,它可能足以满足您的需求。有关更多高级功能,您可以查看JacksonJSONSimple等库。

在前端,您还需要将您的逻辑添加为get()函数的回调,因为它是异步的(因为您正在计划,因此最好使用getJSON发回JSON)。并且你需要在innerloop中增加'sourceFileData'的索引,而不是将其硬编码为0:

 $.getJSON("http://localhost:13839/MyWebApplication/SourceFile", function(sourceFileData) {

    var table = $("<table></table>");
    for (var i = 0; i < sourceFileData.length; i++) 
    {
        var line = $("<tr></tr>");
        for (var j = 0; j < sourceFileData[i].length; j++)
        {
            line.append( $(cell).html('<td> + sourceFileData[i][j] + '</td>'));
        }
        table.append(line);
    }

    table.appendTo( $("#sourceFileTable"));
});