javascript - 使用 ajax 和 jquery 完成工作后显示 html

标签 javascript jquery html ajax

下面的代码是我做的解释。所以它不是完整的。我写的内容足以解释我的问题。

html 加载 -> 调用 ajax -> json(response) -> 通过 jquery 将 json 添加到表行

每当我使用ajax并使用响应数据更新页面并使用jquery在页面中附加一些元素时,它都会在屏幕上非常快速地显示在jquery中逐一附加的过程。

1.当使用jquery在for循环中附加所有元素后,我可以有办法立即显示所有表格吗?

2.在我的示例代码中,它在文档准备好后第一次使用 $(document).ready() 调用 ajax。在表中显示数据的方式似乎很慢,因为它在加载所有 html 页面后调用 ajax,然后使用 ajax 响应更新 html 的某些部分。是不是ajax的使用方法不对???

<html>

<body>
   I have to html syntax to show data list.
   <table id="example">
       <thread>
           <th>order</th>
           <th>title</th>
       </thread>
       <tbody>
       </tbody>
   </table>
   <button onclick="javascript:loadajaxfunction(parameter to update)">Update</button>
</body>

<script>
    $(document).ready(function() {
        loadajaxfunction();
    });

    loadajaxfunction = function(parameter to update) {
    $.ajax({
        url:
        type:
        data:
        success: function(json){
            $tbody = $("#example").find('tbody')
            $row = $('<tr>');

            $.each(json.objects, function(key, value){
                $col = $('td>');
                $col.text(value);
                $row.append($col);
            }
            $tbody.append($row);
        }
    });
</script>

</html>

最佳答案

  1. 您可以先隐藏表格,然后在我们收到响应后将其全部显示。像这样:

    <table id="example" style="visibility: hidden"> <!-- Change here -->
       <thread>
           <th>order</th>
           <th>title</th>
       </thread>
       <tbody>
       </tbody>
    </table>
    

    在 JS 中:

    loadajaxfunction = function(parameter to update) {
    $.ajax({
        url:
        type:
        data:
        success: function(json){
            $tbody = $("#example").find('tbody')
            $row = $('<tr>');
    
            $.each(json.objects, function(key, value){
                $col = $('td>');
                $col.text(value);
                $row.append($col);
            }
            $tbody.append($row);
            $("#example").css('visibility', 'visible'); // <--- And here
        }
    });
    
  2. 您使用 Ajax 的方式没有任何问题。如果您想更快地呈现表格,请尝试直接从服务器以 HTML 形式返回。

  3. 如果您必须在客户端执行此操作,请尝试先构建整个表的 HTML,然后再将其替换为 <table> ,不要通过逐行追加来过多地访问 DOM。

    loadajaxfunction = function(parameter to update) {
    $.ajax({
        url:
        type:
        data:
        success: function(json){
            $tbody = $("#example").find('tbody')
            $row = $('<tr>');
            // Build html for cols
            var cols = '';
            $.each(json.objects, function(key, value){
                cols += '<td>' + value + '</td>'
            }
            // Append it in all by once
            $row.html(cols);
            $tbody.append($row);
            $("#example").css('visibility', 'visible');
        }
    });
    

关于javascript - 使用 ajax 和 jquery 完成工作后显示 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41338038/

相关文章:

javascript - $(window).height() 在 IE9 上失败

javascript - 将值从 ViewModel 传递到 JavaScript

javascript - index.addObjects 抛出使用错误(Algolia)

jquery - 如何从另一个弹出窗口打开一个弹出窗口? -jquery

javascript - 悬停在按钮上后圈出跟随光标

javascript - Jquery 拖放搜索

Javascript/jQuery 是否可以通过另一个函数跳出一个函数?

javascript - 使用 jQuery 检索 CSS 百分比值

javascript - jquery 日历插件不起作用

javascript - YUI自动完成错位问题