使用ajax和jQuery我想使用数据库中的值每5分钟自动更新一些div。
例如:
<div id="1">One</div>
<div id="2">Two</div>
<div id="3">Three</div>
<div id="4">Four</div>
id="1"
是相应数据库主键的id值。我想检查数据库中的密钥,如果One
已更改,则div将显示新文本。
异步批量更新这些值的最佳方法是什么?
答案 0 :(得分:4)
让客户端脚本构建要检查的ID列表,并将它们发送到服务器。服务器可以使用WHERE id IN (1,2,3,4) AND date_changed > $last_checked
类型查询进行查询。构建一个用这些ID键入的数组:
$array[] = array('id' => 1, 'txt' => "new text for div #1");
$array[] = array('id' => 4, 'txt' => "new text for div #4");
echo json_encode($array);
当客户端从服务器获取响应时,只需遍历该数组并更新相应的div。
这样,您只进行一次AJAX调用,只运行一个查询,并且一个脚本调用处理更新所有已更改的div。如果您使用PHP的默认基于文件的会话,这将特别有用。如果您在短时间内触发4个ajax调用,则必须按顺序处理它们,因为PHP会在脚本使用时锁定会话文件。响应时间将为tank,因为每个ajax请求只能按顺序而不是并行处理。也减少了HTTP开销,因为您只执行一个请求而不是4个单独的请求。
答案 1 :(得分:2)
根据Marc B的想法,对于jQuery处理,您可以执行以下操作:
var postString = 'check_ids=1,2,3,4';
$.get('/check-for-update', postString, function(response) {
$(response).each(function() {
$('div#' + this.id).html(this.txt);
});
}, 'json');
作为旁注,不建议仅使用数字作为ID。考虑为他们添加一些有意义的内容,例如entry_1
entry_2
等