2011-08-24 77 views
1

在php和jQueryMobile中编写代码。当刷新时间改变时,如何让jQuery Mobile动态刷新div?

我试图让一个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());?> 

仅仅是有用于调试

任何意见/想法/赞赏的答案。

干杯

回答

3

您已经将刷新时间硬编码到setTimeout函数中。它看起来是动态的,但仅仅是因为该值是在页面生成时设置的,并且PHP填充了该值。之后,它被硬编码到HTML中并且不会改变。

如果refreshTime依赖于任何发生的事情对日的eServer,你必须让服务器与动态生成的内容一起返回新的时间间隔:

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数据结构以及新的刷新时间。