从数据库异步加载多个div?

时间:2011-05-16 16:43:09

标签: php jquery mysql ajax

使用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将显示新文本。

异步批量更新这些值的最佳方法是什么?

2 个答案:

答案 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处理,您可以执行以下操作:

的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