【发布时间】:2013-04-24 11:31:40
【问题描述】:
我想知道如何使用AJAX 重新加载<div>,其中显示的内容是从MySQL database 检索到的记录。棘手的部分是我希望<div> 显示每个结果 30 秒,然后重新加载以显示下一个结果。
这里是media table:
_______________________________________________
| FIELD 1 | FIELD 2 | FIELD 3 | FIELD 4 |
-----------------------------------------------
| ID | TVOne | TVTwo | Active |
-----------------------------------------------
| 15 | no | no | no |
-----------------------------------------------
| 29 | yes | no | yes |
-----------------------------------------------
| 53 | no | no | no |
-----------------------------------------------
| 71 | yes | yes | yes |
-----------------------------------------------
在位于 TVOne 页面的 <div> 中,我希望它加载记录 29 和 71。在位于 TVTwo 页面的 <div> 中,我希望它只加载记录 71。这个 table 由用户修改后端,所以结果总是不同的。
我正在阅读 THIS QUESTION,我相信 javascript 选择器 .eq() 可能是其中的一部分,但我不知道如何将它们组合在一起。
<div>所在的页面称为index4.php。上一页 (index3.php) 执行查询以查看是否有任何记录设置为活动的,如果是,则将 num_rows 设置为 $count 并转到 index4.php?count=$count,如果没有,则返回显示序列的开头index.php。
这里是index3.php重定向函数:
<?php
$result = $mysqli->query("SELECT * FROM media WHERE Active = 1 AND TVTwo = 1");
$count = $result->num_rows;
if($count > 0){$media = "index4.php?count=$count";}
else{$media = "index.php";}
?>
<script>
refresh=window.setTimeout(function(){location.href="<?php echo $media;?>"},15000);
</script>
这是我的AJAX 代码,用于加载<div>:
<script>
function MediaQuery(qty)
{
if (qty=="")
{
document.getElementById("Media").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("Media").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","../process/QueryMedia.php?count="+qty,true);
xmlhttp.send();
}
</script>
这里是QueryMedia.php:
<?php
$count = $_GET["count"];
$sql = ("SELECT * FROM media WHERE Active = 1 AND TVTwo = 1 LIMIT $count");
if(!$result_sql = $mysqli->query($sql))
{
echo QueryCheck("getting the media records ","from the media",$mysqli);
}
// fetch it here
?>
【问题讨论】:
-
到目前为止你尝试过什么?向我们展示一些代码,否则我们必须假设您希望我们为您完成工作,而我们不会这样做。你基本上已经找到了你需要的一切:提供数据的服务器端脚本、AJAX 调用、替换视图的 JS 东西和触发自动重新加载的 JS 超时。
-
@TillHelge 除了基本的
AJAX调用来加载<div>之外,我真的没有太多其他东西,但我很欣赏你所说的,所以我会发布它。跨度> -
@TillHelge 这正是我的感受,就像我拥有了所有的原料......我只是没有食谱。
-
不知何故你遗漏了真正有趣的部分。您选择什么格式来传输数据? JSON?你的代码到底有什么问题?你被困在哪里了?什么不起作用?
-
@TillHelge 我确实发布了我所有的代码,所以如果你没有看到它,我没有它。使用
PHP完成数据传输,除非我不明白您在问什么?我所拥有的代码的问题是......嗯......它还不存在。我所拥有的只是一个加载<div>的AJAX 调用,仅此而已。这就是我被卡住的地方,我不知道如何进入下一步或前进的方向。
标签: php javascript mysql ajax