刷新单个表格单元格,而不刷新整个页面


Refresh individual table cells without refreshing whole page

我有一个表,里面有很多单元格,其中有一些php脚本,可以在一个名为foo.txt的文本文档中搜索数字片段。代码真的不需要理解我的问题,但以防万一:

<?php
$input = "3.000000";
$file = file_get_contents("foo.txt");
$pos = strrpos($file, $input);
if($pos !== false){
$start = $pos + strlen($input);
$end = strpos($file, "00", $start);
$data = substr($file, $start, $end - $start);
$dataprocessed = round($data, 2, PHP_ROUND_HALF_DOWN);
echo $dataprocessed;
}else{
echo "Error";
}
?>

从中我可以得到一个像"34.23"这样的数字,这是正确的。问题是foo.txt每分钟都会更改/被覆盖,将其更改为"34.23",但除非整个页面被刷新,否则网页不会显示新数据。我想以某种方式拥有它,以便在标签中显示新的/覆盖的数据,而不需要每分钟刷新整个页面。我在HTML/XTML、PHP方面有经验,在JavaScript/JQuery方面经验有限,一直在阅读关于AJAX的帖子和教程,但无法完全发挥作用。我对创造性的解决方案和任何解决方案持开放态度。提前感谢!

您可以使用setInterval$.load()使用AJAX每隔几秒钟重新加载页面的部分:

$(function(){
    setInterval(function(){
        $('div#table-container').load('website_url.php?randval=' + Math.random() + ' div#table-container table');
    },10000);
});

每10秒,这将通过AJAX加载website_url.php,只获取div#table-container table部分,并通过替换div#table-container 中的当前内容插入当前页面

如果您担心IE兼容性,?randval=' + Math.random()是解决IE6缓存问题的解决方案。

http://api.jquery.com/load/

如果您以统一的方式标识表单元格,如:

<tr>
  <td id ="a1"></td>
  <td id ="a2"></td>
<tr>
<tr>
  <td id ="b1"></td>
  <td id ="b2"></td>
<tr>

然后在一个php页面的间隔上设置一个ajax调用,这是JSON格式的服务器更改,如:[{'cell':‘a1’,‘value’:‘34.7}];你可以用这样的电话来代替它们

for (item in results) {
    $("#" + item.cell).val(item.value);
}

之后剩下的唯一事情就是为数据保留一个序列号。每次更改时,都会得到一个新的序列号。因此,当客户端请求更改时,它会提供一个序列号,你可以更新它。下次客户端请求时,它应该提供最新的序列号。这样,您就不会不断地将所有更改发送给每个客户端。

我会使用带有setInterval的AJAX来检查是否要进行更改(comet(nd来进行标记,获取列和行的编号,并使用带有jquery的nth-child((修饰符示例:

$(表#示例tr:nth child(2(td:nth child(5((.html('my new html answer'(;//意思是第2行第5列

要获得可能有用的第n个子值,您可以使用

$(this(.index((+1,因为第n个子级不是基于0的