我有一个div元素,通过php标签调用其他php文件输出
<div class="View"> <?php
echo file_get_contents("http://example.com/livefeed.php?site=" . $_GET["site"] . "&num=6");
?></div>
我想重新加载这个div元素而不重新加载整个页面。请帮助我。提前谢谢。
答案 0 :(得分:2)
这是使用ajax,html,jquery和php来使div的内容每五秒重新加载一次。您需要两个文件: index.php 和 livefeed.php 。
<强>的index.php:强>
<div class="View"></div>
<script src="http://code.jquery.com/jquery-3.1.1.js"></script>
<script>
setInterval(function(){
$.ajax({
url: "livefeed.php?site=<?php echo $_GET["site"]; ?>&num=6",
cache: false,
success: function(html){
$(".View").html(html);
},
});
},5000);
</script>
现在每5秒钟它会从livefeed.php中获取内容并将其放入div中。
答案 1 :(得分:0)
使用AJAX。由于问题有jQuery
标记,因此这里是jQuery解决方案。
setInterval(function(){
$(".View").load("sitename")
}, 20000)} //Every 20000 miliseconds (20 secs)
但是,您需要知道网站名称。您可以将其注入代码中,但您必须确保不会获得XSS(跨站点脚本)攻击。
如果您在字符串中转义引号和反斜杠,则应该能够安全地传递所有数据。然而,这仍然非常危险。
我认为site=...
不应包含"
或\
。如果是这样,您应该在将这些字符放入HTML之前将其删除。
<div class="View" data-update="<?php echo "http://example.com/livefeed.php?site=" . str_replace("\\", '', str_replace('"', '', $_GET["site"])) . '&num=6">';
echo file_get_contents("http://example.com/livefeed.php?site=" . $_GET["site"] . "&num=6");
?></div>
然后你可以做
setInterval(function(){
$(".View").load($(".View").data("update"))
}, 20000)} //Every 20000 miliseconds (20 secs)
我们所做的是删除了"
和\
等危险字符,然后发出了一个AJAX请求。这是完整的代码。
<div class="View" data-update="<?php echo "http://example.com/livefeed.php?site=" . str_replace("\\", '', str_replace('"', '', $_GET["site"])) . '&num=6">';
echo file_get_contents("http://example.com/livefeed.php?site=" . $_GET["site"] . "&num=6");
?></div>
<script>
setInterval(function(){
$(".View").load($(".View").data("update"))
}, 20000)} //Every 20000 miliseconds (20 secs)
</script>