在 JSP 上使用 Jquery Ajax 在 Datatables 上显示

Posted

技术标签:

【中文标题】在 JSP 上使用 Jquery Ajax 在 Datatables 上显示【英文标题】:Using Jquery Ajax on JSP to display on Datatables 【发布时间】:2020-05-18 23:43:27 【问题描述】:

这是我第一次使用 Jquery Ajax。

上下文是,我试图在 Datatable 上显示超过 10000 行数据,我之前所做的只是使用我的 servlet 将我的 Arraylist 数据转发到 JSP,然后循环并显示数据显示数据。

加载数据表花费了太多时间。所以我决定尝试使用 Jquery Ajax 看看这是否有助于解决问题。

我目前在实施它时遇到了一些问题,有人可以帮助我吗?

我正在使用 GSON 序列化我的数组列表。

servlet.java

 String json =  gson.toJson(listS);
...

request.setAttribute("listS", json);
request.getRequestDispatcher("WEB-INF/index.jsp").forward(request, response);

index.jsp

String list =  (String) request.getAttribute("listStartup");
    ......

                    <td>Insert 1st Element</td>
                    <td>Insert 2nd Element</td>

                 <%
               ;

    ......


    <script>

    $(function () 
        <% list =  (String) request.getAttribute("listS");%> 
        $("#sp").DataTable(
    "scrollY": 500,
            "scrollX": true,
            "paging": true,
            "lengthChange": false,
            "searching": true,
            "ordering": true,
            "info": true,
            "autoWidth": false,
            "processing": true,
            "serverSide": true,
            "ajax" : list

        );
      );



</script>

我的 JSONarray 是这样的结构,这是输出

[
  
    "Element1": "Text",
    "Element2": "Text",
  ,
 
    "Element1": "Text",
    "Element2": "Text",
  ,

....
]

如果有人愿意将我链接到一些我可以阅读的有用文档。我现在似乎找不到任何对我有帮助的东西。

我不确定如何遍历我的 JSONarray 来访问对象并显示我的 JSON 数据。 如果有 1000 个对象,我将遍历每个对象并连续显示它们的数据。

我也不知道如何让它与数据表一起工作......

【问题讨论】:

关键是要实现,wherewhen执行哪些代码-服务器上的JSP,什么时候请求和渲染页面(即之前响应被发送到浏览器),并且浏览器中的javascript之后浏览器接收到已经生成响应。这意味着您不能混合使用 JSP 和 JavaScript 变量("ajax" : list 行无效)。参见例如***.com/questions/44678192/… 提示。 嗨 Jozef,谢谢你,我想我明白你的意思了。我想theres相当多的东西我不明白。因此,如果我将太多数据加载到数据表中。所以说如果我有 10 页,当我首先加载表格时,AJAX 会只加载第一页吗?如果不是我如何让他们这样做.. 【参考方案1】:

您将获得 json 数组,其中每个 json 对象都有一些特定的键(Element1 和 Element2)。您只需要将这些键映射到数据表中的相应列。然后将列表传递给数据表进行渲染。

见下面的代码

$(function () 
        var list = <% (String) request.getAttribute("listS");%>;
        //convert string to json object
        var listJson = JSON.parse(list);
       var table = $("#sp").DataTable(
    "scrollY": 500,
            "scrollX": true,
            "paging": true,
            "lengthChange": false,
            "searching": true,
            "ordering": true,
            "info": true,
            "autoWidth": false,
            "columns": [ // map the columns here
              "data": "Element1" ,
              "data": "Element2" 
             ]
        );

        //render list here
        table.clear();
        table.rows.add(listJson); // make sure that list should be json object and not text
        table.draw();
      );

【讨论】:

嗨 Bhushan,感谢您的快速响应,如果 String json = gson.toJson(listS);是一个 JSON 对象。我也不需要这些:“processing”:true,“serverSide”:true,“ajax”:list 另外,我不认为java有“var”,我该如何克服这个 您正在通过请求对象读取 json,但也将其转换为 String,因此我们需要再次将其解析为 JSON。我们在这里不需要处理、服务器端和 ajax,因为您已经从请求对象获取列表,而不是进行任何额外的 API 调用 var 来自 javascript,不适用于 JAVA,因为您的数据表脚本在 scriptlet 之外 好的,所以我需要将其重新解析为 JSON 对象。无论如何,我是否可以将 json 对象从 servlet 解析为 JSP 而无需将其转换为字符串? @第二条评论。明白了,我正在浏览文章,并没有意识到我实际上可以在脚本中使用 var...

以上是关于在 JSP 上使用 Jquery Ajax 在 Datatables 上显示的主要内容,如果未能解决你的问题,请参考以下文章

如何使用jquery在jsp中编写ajax get? [复制]

如何在jsp中使用ajax制作jquery自动完成ui

Jsp&JavaScript &jQuery &Ajax&Json

jquery+ajax实现动态加载表单

jQuery和Ajax的使用

JSP通过AJAX获取服务端的时间,在页面上自动更新