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

时间:2011-07-05 21:25:07

标签: php javascript jquery html ajax

我有一个包含许多单元格的单元格,其中包含很少的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 / XHTML,PHP,JavaScript / JQuery经验有限的经验,并且一直在阅读关于AJAX的帖子和教程,但是不能让它工作。我愿意接受创意解决方案和解决方案。非常感谢提前!

3 个答案:

答案 0 :(得分:0)

您可以使用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内的内容插入当前页面

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

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

答案 1 :(得分:0)

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

<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);
}

之后剩下的唯一事情是为数据保留序列号#。每次更改时,都会获得一个新的序列号。因此,当客户端要求更改时,它会显示序列号,您可以更新它。客户端下次请求它时应显示最新的序列号。这样,您就不会经常向所有客户发送所有更改。

答案 2 :(得分:0)

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

$(table#example tr:nth-​​child(2)td:nth-​​child(5))。html('my new html answer'); //意思是第2行第5列

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

$(this).index()+ 1因为nth-child不是基于0的