我有通过 jQuery 发送 ajax 请求后填写的表格。每 10 秒后发出 ajax 请求,它返回大量数据(大约 1000 行 - 我知道分页,但它不是我的选择)。目前我正在重新创建每个请求的所有行。是否有可能我只能修改与以前结果集不同的行?
我的页面将当前结果集缓存在一个数组中,然后对于每个后续请求,我将新结果集与前一个结果集进行比较,并在更改时删除当前的 html 表并重新创建它。呈现新 HTML 表格的过程需要花费大量时间,我想知道是否有办法减少这种情况。
我已经尝试搜索它,但找不到任何与之相关的东西。我只需要知道是否可以使用任何 jquery 插件?或者我应该采用什么策略来修改更改的行并删除新数据集中不存在的行。
编辑:这是我拥有的当前代码
var sCurrentStr = "";
var sPreviousStr = "";
var bFirstRequest = true;
function OnGetListSuccess(sResponse)
{
//build table from the response
$(xmlDoc).find('Table').each(function ()
{
var sTitle = $(this).find('Title').text();
var dBCDate = parseStringToLocalDate($(this).find('BCDateTime').text());
var sDestination = $(this).find('DestinationName').text();
//GetLocalDateFromUTCDate
var dStartDate = parseStringToLocalDate($(this).find('StartDateTime').text());
var dEndDate = parseStringToLocalDate($(this).find('EndDateTime').text());
sCurrentStr += sTitle + dBCDate + sDestination + (dStartDate.toLocaleString()) + (dEndDate.toLocaleString());
});
if (bFirsRequest)
{
//cache results in sPreviousStr
sPreviousStr = sCurrentStr;
bFirstRequest = false;
}
if (sCurrentStr != sPreviousStr)
{
$(xmlDoc).find('Table').each(function ()
{
$('<tr onclick="javascript:GetRowDetails(this)"></tr>').html('<td>' + '1' + '</td>' +
'<td style="width:0px;display:none" class="hiddenSearchClass">' + sCurrentStr + '</td>' +
'<td>' + sTitle + '</td>' +
'<td>' + dBCDate.toLocaleString() + '</td>' +
'<td>' + sDestination + '</td>' +
'<td>' + dStartDate.toLocaleString() + '</td>' +
'<td>' + dEndDate.toLocaleString() + '</td>'
)
.appendTo('#MyHTMLTable');
});
}
else
{
//no changes ignore it
sPreviousStr = sCurrentStr;
}
}