重新加载Div调用php文件而不重新加载页面

时间:2016-12-18 15:43:26

标签: php jquery ajax

我有一个div元素,通过php标签调用其他php文件输出

<div class="View"> <?php
echo file_get_contents("http://example.com/livefeed.php?site=" . $_GET["site"] . "&num=6");
?></div>

我想重新加载这个div元素而不重新加载整个页面。请帮助我。提前谢谢。

2 个答案:

答案 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>