【问题标题】:JSON To HTML Table Compare and AlertJSON 到 HTML 表比较和警报
【发布时间】:2019-04-28 12:08:27
【问题描述】:

我目前有一个 AJAX 请求来更新 JSON 文件中的 HTML 表。 我现在想要一种方法来提醒更改,提醒已添加的新表格项。

下面是如何填充 HTML 表格的示例。 我尝试将 JSON 请求存储到 JSON.stringify 中,将其存储到变量中,然后将其与上次运行时进行比较。不走运,我只返回真/假,我希望比较返回新旧数据的区别。

            function populate_table(){
                $(document).ready(function(){
                    $.getJSON("data.json", function(data){
                        var update_table = '';
                        $.each(data, function(key, value){
                            update_table += '<tr>';
                            update_table += '<td>'+value.name+'</td>';
                            update_table += '<td>'+value.date+'</td>';
                            update_table += '<td>'+value.address+'</td>';
                            update_table += '<td>'+value.phone+'</td>';
                            update_table += '</tr>';
                        });
                        $('#my_table tbody').html(update_table);
                    });
                });
            };
            populate_table(); 
            setInterval(function(){
                populate_table() 
            }, 5000); 

在不改变后端 JSON 人口的情况下,有没有办法将新传入的 AJAX 数据与上次传入的数据进行比较,找出差异并发出警报? 任何帮助将不胜感激。

【问题讨论】:

  • 当你说“运气不好”时,你到底是什么意思?如果 JSON 数据相同,那么应该可以进行比较。 JSON 中是否有一些元素会改变每个 AJAX 调用?也许是时间戳?如果是这样,您可以将其排除在比较之外。
  • 请注意,每次 populate_table 运行时,您都会向文档就绪事件添加另一个事件处理程序...您可能希望删除该位,而是将您的初始调用包装到 populate_tablesetInterval 在文档就绪处理程序中。
  • @jwh20 ,编辑我的帖子以获得更多上下文。我想比较并找出不同之处。当我说“不走运”时,我的意思是说我只能返回真/假,而不是实际的差异。我不知道如何做相当于 Powershell cmdlet Compare-Object 的例子。

标签: javascript html json ajax


【解决方案1】:

也许您可以尝试将数据存储在 localStorage 中。下次获取数据时,您可以从上次 Ajax 调用中提取数据并使用循环进行比较

【讨论】:

    【解决方案2】:

    定义一个数组并将元素推入数组,然后您可以将数组与新数据进行比较

    var old_data = new Array;
    function populate_table(){
    ...
    old_data .push(name:value.name,
    dtae:value.date,
    addres: value.address,
    phone:value.phone);
    $('#my_table tbody').html(update_table);
    

    【讨论】:

    • 有没有办法用javascript找到两个数组的差异,而不是识别是否有差异?例如。比较 ["1", "2", "3"] 和 ["1", "3"] 时返回 "2"。感谢您的帮助!
    • 这里可以复制比较功能stackoverflow.com/questions/1187518/…
    猜你喜欢
    • 2013-08-12
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 2011-08-14
    • 2019-07-29
    • 2019-07-12
    相关资源
    最近更新 更多