我试图经常刷新页面上的一些元素。我知道这里有一百万个主题,我试图让我的工作,但这是我需要刷新..
这是在页面加载时生成的代码:
<div id="galleria">
<?php
$a = array();
$dir = '../public/wp-content/uploads/2012/01';
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if (preg_match("/\.png$/", $file)) $a[] = $file;
elseif (preg_match("/\.jpg$/", $file)) $a[] = $file;
elseif (preg_match("/\.jpeg$/", $file)) $a[] = $file;
}
closedir($handle);
}
$totalImgs = count($a);
$imgUsed = array();
for ($j = 0; $j < 100; $j++)
{
do
{
$randIndex = mt_rand(0, $totalImgs);
}
while ($imgUsed[$randIndex] === TRUE);
$imgUsed[$randIndex] = TRUE;
echo "<img src='" . $dir . '/' . $a[$randIndex] . "' />";
}
?>
</div>
我想每10秒自动刷新一次,但不会重新加载页面。我已经阅读了ajax,似乎这是可能的,但我似乎无法让它工作。
所有这一切都是显示galleria div,并在div中加载100个图像。然后galleria脚本接管并很好地显示它。 AJAX会更好还是JQuery?
感谢您的帮助!
答案 0 :(得分:5)
“AJAX会更好还是jQuery?” - AJAX是一种技术,jQuery是一个库。事实证明,jQuery具有出色的AJAX API。
让我们称之为PHP“galleria.php”。在原始页面加载时,使用好的“<?php include('galleria.php')?>
将其插入到父PHP页面中。现在最终用户看到了完整的初始化页面。
要更新它,您可以使用许多AJAX选项,但最简单的方法是在页面上包含jQuery,然后您可以在脚本中使用.load()
:
var updateGallery = setInterval(function() {
$('#someDiv').load('galleria.php');
}, 10000);
还有调整空间......可能galleria.php
不包括页面上设置的<div id="galleria">
。在这种情况下,您可以直接加载到#galleria
而不是#someDiv
,并为自己保存一个不必要的容器。也许您通过在不同的范围内声明它来缓存$('#someDiv')
对象,以便可以重复使用它。但这是一般的要点。
答案 1 :(得分:0)
使用setInterval
函数和ajax调用。
http://jquery-howto.blogspot.com/2009/04/ajax-update-content-every-x-seconds.html
答案 2 :(得分:0)
在我写here时,您可以使用jQuery ajax调用填充div。
<html>
<head>
<script type="text/javascript">
function refresh_gallery(){
$.ajax({
type: "POST",
url: "generate_gallery.php", // your PHP generating ONLY the inner DIV code
data: "showimages=100",
success: function(html){
$("#output").html(html);
}
});
}
$(function() {
refresh_gallery(); //first initialize
setTimeout(refresh_gallery(),10000); // refresh every 10 secs
});
</script>
</head>
<body>
<div id="output"></div>
</body>
</html>