Как мне заставить jQuery Mobile динамически обновлять div, когда время обновления меняется? - PullRequest
1 голос
/ 25 августа 2011

Написание кода в php и jQueryMobile.

Я пытаюсь получить div для обновления на основе переменной refreshTime

<div id="dynamicContent">
<em><?= $this->subtitle ?></em>
<img src="<?= $this->image ?>"/>
<em><?= $this->synopsis ?></em>
<br/> set refresh: <?= $this->refreshTime?> time on server: <?= date("H:i",time());?>  
<h2><a href="<?=$this->irrelaventLink ?>"> More Details</a></h2>
</div>

<script>
setTimeout(function() {
                $('#dynamicContent').load('/url/that/generates/plain/html/');
            },<?= $this->refreshTime ?>*1000);
</script>

Таким образом, этот код будет запускаться один раз и обновлять div dynamicContent после истечения refreshTime . Проблема заключается в том, что я хочу продолжать обновление с новым значением refreshTime , которое будет установлено после обновления.

Я искал в Интернете поиски способа jQuery Mobile, чтобы сделать это, хотя, если работает способ jQuery, я счастлив попробовать это и посмотреть, как это выглядит на мобильном телефоне.

Обратите внимание, что строка:

<br/> set refresh: <?= $this->refreshTime?> time on server: <?= date("H:i",time());?>

Только для отладки

Любые комментарии / мысли / ответы приветствуются.

Ура

1 Ответ

3 голосов
/ 25 августа 2011

Вы жестко запрограммировали время обновления в функцию setTimeout. Это выглядит динамически, но только потому, что значение устанавливается, когда страница генерируется и PHP заполняет значение. После этого он жестко запрограммирован в HTML и не изменяется.

Если refreshTime зависит от того, что происходит на сервере, вам нужно заставить сервер возвращать этот новый интервал времени вместе с динамически генерируемым контентом:

var refreshTime = <?= $this->refreshTime ?>; // set initial value

function refreshContent() {
    $.ajax({
      url: '/url/that/generates/no/longer/plain/html',
      dataType: 'json',
      success: function(data) {
          refreshTime  = data.refreshTime;   
          $('#dynamicContent').html(data.content);
          setTimeout(refreshContent, refreshTime);
      }
    });
}
refreshContent();

Затем вам придется изменить скрипт, генерирующий URL-адрес, чтобы он возвращал структуру данных json, которая содержит новый контент, а также новое время обновления.

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