通过JQuery AJAX调用将<tr>逐步添加到HTML表(Django框架)

chenard612

我是Java,Jquery和Ajax请求的新手,我的脚本执行有问题。

基本上,我的首页上有一个很长的列表要显示(1200多个项目)。我过去通常正常加载页面,但是由于列表加载时间很长(而且正好位于页面中间),因此所有HTML元素显示之前都会有巨大的延迟。例如,我的页脚将是要加载的最后一个项目,并且在导航栏之后几乎会显示一整秒。

我决定使用AJAX请求先加载HTML,完成导航栏和页脚,然后才获取列表以在页面中间显示它。

我遇到的第一个问题是,在处理脚本时,没有任何显示。这意味着,即使我的第一个列表项的“ tr”准备好了,它也只会在第1200个“ tr”也准备好时显示。我需要逐步填充表格。我可以在控制台中看到生成的“ tr”,但仅在完成后(在12'500ms之后)将它们应用到HTML中。

我的第二个问题是,在处理相同的脚本时,我的页面无法响应我的请求。例如,直到脚本完成后,我才能“检查”或单击页面上的任何按钮。这是令人担忧的,因为即使解决了第一个问题,我仍然有大约12'500毫秒的无响应页面。

我使用的代码如下:

$(document).ready(function(){
    console.log( "Document Ready" );
    $.ajax({
      url: "update_list/",
      type: 'get',
      success:function(response) {
        buildTable(response)
      }
    });
});

先前代码片段中提供的URL链接到我的Django后端中的该视图:(我要提取的列表项目是公司股票)

def update_list(request, *args, **kwargs):
    if request.is_ajax():
        stocks = StockListView().get_queryset().values('symbol', 'company_name', 'market_cap')
        return JsonResponse({"stocks_serialized": list(stocks)})

然后,这是用以下命令填充我的HTML表的脚本:

function buildTable(data){
  var table = document.getElementById('tableId')
  const values = Object.values(data);
  //this step is because I get a dictionary with an array as its first value. We only need the array for the next part.
  const stock_list = values[0]
  for (var i = 0; i < stock_list.length; i++){
    var row = `<tr>
                  <td>${stock_list[i].symbol}</td>
                  <td>${stock_list[i].company_name}</td>
                  <td>${stock_list[i].market_cap}</td>
              </tr>`
              table.innerHTML += row
    console.log( row )
  }
}

有人知道如何解决这些问题吗?我是否需要将策略更改为AJAX,以便在向下滚动触发器上仅请求列表的一小部分增量?当时我的列表中只有大约20个元素出现,其余的只能通过在我的表格中向下滚动来访问。

谢谢大家的帮助!

chenard612

我在Jquery的网站上找到了解决我问题的方法: https://www.tutorialrepublic.com/faq/how-to-add-remove-table-rows-dynamically-using-jquery.php

function buildTable(data){
  const values = Object.values(data);
  const stock_list = values[0]
  for (var i = 0; i < stock_list.length; i++){
        //We first declare the variables for each <td> we need
        var symbol = stock_list[i].symbol
        var comanyName = stock_list[i].company_name
        var market_cap = stock_list[i].market_cap_rounded
        //We then append them to a string in html fashion
        added_row = '<tr>'
        + '<td>' + symbol +  '</td>'
        + '<td>' + comanyName +  '</td>'
        + '<td>' + market_cap +  '</td>'
        + '</tr>'
        //To finally append this long string to your table through it's ID:
        $('#tableId').append(added_row)
        };
  };

这使我的主页更快并且解决了我的两个问题。

该步骤似乎使页面速度大大降低了:

table.InnnerHtml += row

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用jquery将<tr>添加到表中+在添加的行上保留jquery函数

来自分类Dev

jQuery:将td元素添加到tr

来自分类Dev

将<tr>元素添加到动态表中,动态而不进行页面刷新,php jquery

来自分类Dev

jQuery $.each 或 $.map 将 <tr> 附加到动态添加的表

来自分类Dev

无法删除通过jQuery'append'添加的<tr>

来自分类Dev

通过单击复选框将类添加到所有<tr>

来自分类Dev

通过单击复选框将类添加到所有<tr>

来自分类Dev

通过JQuery将内容添加到特定的HTML标签

来自分类Dev

使用jQuery将td附加到表中的tr

来自分类Dev

通过jquery将文本添加到<textarea>而不是添加到HTML

来自分类Dev

使用jQuery将HTML标签添加到表中

来自分类Dev

通过 tr id 从表中删除 tr

来自分类Dev

如何将jQuery Ajax调用与PHP通过HTML提供的动态参数绑定

来自分类Dev

jquery通过单击标签删除一行表(<tr>)

来自分类Dev

jQuery:如何使用其ID将现有的<td>元素添加到新的<tr>元素?

来自分类Dev

在ajax中将序列号添加到<tr>

来自分类Dev

jQuery:将tr应用于表tbody可以防止tr点击功能

来自分类Dev

jQuery将tr背景颜色更改为表中的特定tr

来自分类Dev

jQuery:将tr应用于表tbody可以防止tr点击功能

来自分类Dev

JQUERY将行添加到表

来自分类Dev

jQuery动态元素(如TR和TD)添加到HTML TABLE

来自分类Dev

将id的td元素添加到tr

来自分类Dev

将边框样式添加到<tr>不起作用

来自分类Dev

将id的td元素添加到tr

来自分类Dev

使用PHP将<tr>添加到空的<tbody>

来自分类Dev

将Accept标头添加到JQuery AJAX GET(通过JSONP)请求

来自分类Dev

通过jQuery将默认文本添加到Inline Ajax Comments WP插件中

来自分类Dev

通过jQuery将默认文本添加到Inline Ajax Comments WP插件中

来自分类Dev

将 html <TR> 字符串添加到表格中

Related 相关文章

  1. 1

    使用jquery将<tr>添加到表中+在添加的行上保留jquery函数

  2. 2

    jQuery:将td元素添加到tr

  3. 3

    将<tr>元素添加到动态表中,动态而不进行页面刷新,php jquery

  4. 4

    jQuery $.each 或 $.map 将 <tr> 附加到动态添加的表

  5. 5

    无法删除通过jQuery'append'添加的<tr>

  6. 6

    通过单击复选框将类添加到所有<tr>

  7. 7

    通过单击复选框将类添加到所有<tr>

  8. 8

    通过JQuery将内容添加到特定的HTML标签

  9. 9

    使用jQuery将td附加到表中的tr

  10. 10

    通过jquery将文本添加到<textarea>而不是添加到HTML

  11. 11

    使用jQuery将HTML标签添加到表中

  12. 12

    通过 tr id 从表中删除 tr

  13. 13

    如何将jQuery Ajax调用与PHP通过HTML提供的动态参数绑定

  14. 14

    jquery通过单击标签删除一行表(<tr>)

  15. 15

    jQuery:如何使用其ID将现有的<td>元素添加到新的<tr>元素?

  16. 16

    在ajax中将序列号添加到<tr>

  17. 17

    jQuery:将tr应用于表tbody可以防止tr点击功能

  18. 18

    jQuery将tr背景颜色更改为表中的特定tr

  19. 19

    jQuery:将tr应用于表tbody可以防止tr点击功能

  20. 20

    JQUERY将行添加到表

  21. 21

    jQuery动态元素(如TR和TD)添加到HTML TABLE

  22. 22

    将id的td元素添加到tr

  23. 23

    将边框样式添加到<tr>不起作用

  24. 24

    将id的td元素添加到tr

  25. 25

    使用PHP将<tr>添加到空的<tbody>

  26. 26

    将Accept标头添加到JQuery AJAX GET(通过JSONP)请求

  27. 27

    通过jQuery将默认文本添加到Inline Ajax Comments WP插件中

  28. 28

    通过jQuery将默认文本添加到Inline Ajax Comments WP插件中

  29. 29

    将 html <TR> 字符串添加到表格中

热门标签

归档