Обновление отдельных ячеек таблицы без обновления всей страницы - PullRequest
1 голос
/ 06 июля 2011

У меня есть таблица с множеством ячеек, в которых есть небольшие 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 голосов
/ 06 июля 2011

, если вы идентифицируете ячейки таблицы единообразно, например:

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

, затем установите интервал вызова ajax на странице php, то есть серверные изменения в формате JSON, например: [{''cell ':' a1 ',' value ': '34 .7}];Вы могли бы заменить их на вызовы, такие как:

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

Единственное, что осталось после этого - сохранить серийный номер для данных.Каждый раз, когда он меняется, он получает новый серийный номер.Поэтому, когда клиент запрашивает изменения, он представляет серийный номер, и вы можете его обновить.В следующий раз, когда клиент спросит, он должен представить новейший серийный номер.Таким образом, вы не будете постоянно отправлять все изменения каждому клиенту.

0 голосов
/ 19 декабря 2014

Я бы использовал AJAX с setInterval, чтобы проверить, нужно ли вносить изменения (комета) nd для тегирования, получить номер столбца и строки и использовать модификатор nth-child () с примером jquery:

$ (таблица # пример tr: nth-child (2) td: nth-child (5)). html ('мой новый ответ на html');// значение 2-й строки 5-го столбца

Чтобы получить n-ые дочерние значения, возможно, полезные, вы должны использовать

$ (this) .index () + 1, потому что nth-child не основан на 0

0 голосов
/ 06 июля 2011

Вы можете использовать setInterval и $.load(), чтобы использовать AJAX для перезагрузки частей вашей страницы каждые пару секунд:

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

Каждые 10 секунд это будет загружать website_url.php через AJAX, захватывать только часть div#table-container table и вставлять на текущую страницу, заменяя то, что в данный момент находится внутри div#table-container

?randval=' + Math.random() - это обходной путь для решения проблемы кэширования IE6, если вы беспокоитесь о совместимости IE.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...