如果 PHP 输出的结果不是很多,例如有20条网站新闻,你完全可以在页面加载的时候全部输出,但是隐藏,然后用 Javascript 判断应该显示哪一条。
为颍上等地区用户提供了全套网页设计制作服务,及颍上网站建设行业解决方案。主营业务为成都网站设计、成都网站制作、颍上网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
【CSS】
ul#news li {display: none;}
【PHP】
?php
// 假设你的数据是从 MySQL 数据库中得到,输出最后20条新闻
$mysqli = new mysqli("localhost", "user", "password", "news");
$result = mysqli-query("SELECT title, content FROM news ORDER by ID DESC LIMIT 20");
echo "ul id=\"news\"";
while ($row = $result-fetch_assoc()) {
echo "listrong".$row["title"]."/strong: ".$row["content"]."/li";
}
echo "/ul";
exit;
?
【jQuery】
$(function() {
// 页面加载的时候显示第一条新闻
$("#news li:first").show();
var current_row = 1;
var interval_news = setInterval(function() {
// 隐藏当前新闻
$("#news li:nth-child(" + current_row + ")").hide();
// 显示 current_row + 1 条新闻
$("#news li:nth-child(" + (current_row + 1) + ")").show();
// 更新 current_row
if(current_row == 20)
current_row = 1;
else
current_row++;
// 每120秒循环一次
}, 1000 * 120);
});
如果每次输出的内容比较多,要每2分钟通过 $.post 或 $.get 向服务器发出请求
【PHP】
?php
if(isset($_GET["id"])) {
// mysql LIMIT 的 offset 从 0 开始
$id = (int)$_GET["id"] - 1;
$mysqli = new mysqli("localhost", "user", "password", "news");
$result = mysqli-query("SELECT title, content FROM news ORDER by ID DESC LIMIT $id, 1");
$data = $result-fetch_assoc();
// 只输出 id 为 $id 的内容,格式为 json
echo json_encode(array($data["title"], $data["content"]));
}
exit;
?
【jQuery】
$(function() {
var id = 1;
var news_interval = setInterval(function() {
$.get("news.php", {id: id}, function(data) {
data = $.parseJSON(data);
$("h2#title").text(data.title);
$("div#content").html(data.content);
});
if(id == 20)
id = 0;
else
id++;
}, 1000 * 120);
});
这只是大体思路,具体操作还要根据你的需求而定。
你的前台页面$.each循环 是不是应该循环data.list,如果非要写成data ,那么后台php组装数据的时候
$arr['list'][] = ...直接写成$arr[] 你加个list键是有什么特别的意义吗
使用js动态获取的数据是无法使用thinkphp标签的,可以使用一些js的模板标签,如 arttemplate
如果一定要动态使用thinkphp的标签,可以设置一个独立的页面,显示的就是html的内容,再通过jquery get数据替换到页面中。