我现在有一个AJAX请求,要从JSON文件更新一个HTML表格。我现在想要一种方法来提醒更改,提醒新添加的表项。
下面是一个如何填充HTML表的例子。我尝试将JSON请求存储到JSON.stringify中,将其存储到一个变量中,然后将其与上次运行时进行比较..没有运气,我只返回true/false,我希望比较返回新旧数据之间的差异。
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数据与上次的数据进行比较,找到差异并发出警报?
3条答案
按热度按时间6jjcrrmo1#
也许你可以尝试将数据存储在localStorage中,下次当你获取数据时,你可以从最后一次Ajax调用中提取数据,并使用循环比较它们。
t1rydlwq2#
定义一个数组并将元素推入数组,然后可以将数组与新数据进行比较
字符串
oalqel3c3#
Hi这个程序提供了一种比较两个对象的方法,并以用户友好的HTML表格格式呈现差异,以便于可视化。
代码
字符串
解释
这个程式的设计目的是比较两个对象
obj1
和obj2
,并产生一个HTML表格来显示它们之间的差异。它包含数个函数来执行这些工作。让我们一步一步地来分解这个程式:*
getObjectDifferences(obj1: any, obj2: any): any
:此函数接受两个对象obj1
和obj2
,并递归地比较它们以查找差异。以下是它的工作原理:obj1
或obj2
不是对象,则会检查它们是否为不同的值。如果它们不同,则会传回值为[obj1, obj2]
的数组,表示差异。如果它们相同,则会传回undefined
,表示没有差异。obj1
和obj2
都是对象,则继续比较它们的键和值。obj1
和obj2
中的所有唯一密钥。differences
对象以存储找到的差异。obj1
和obj2
中当前键处的值都是对象,则递归调用getObjectDifferences
来比较它们。如果存在嵌套差异,则将它们添加到differences
对象中。differences
对象中记录差异。differences
对象中是否有任何差异。如果有差异,它会传回differences
对象;否则,它会传回undefined
。*
flattenObjectToCSV(obj: any, parentKey = ''): string
:此函数接受一个对象(obj
),并递归地将其拼合为CSV格式。它还为嵌套对象追加一个父键。其工作原理如下:csvRows
,以存储CSV行。flattenObjectToCSV
,并附加父索引键(如果有的话)。*
parseCSVToTable(csv: string | undefined): string
:此函数接受CSV字符串(csv
),并生成显示CSV数据的HTML表格。其工作原理如下:undefined
或空。如果是,则返回一条消息,指示“无更改”。['Attribute', 'Current Value', 'New Value']
。obj1
和obj2
,表示两组数据。它使用getObjectDifferences
计算这些对象之间的差异,使用flattenObjectToCSV
将差异展平为CSV格式,并使用parseCSVToTable
生成HTML表格。总之,该程序提供了一种比较两个对象的方法,并以用户友好的HTML表格格式显示差异,以便于可视化。