微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 刷新div以从数据库中检索信息而不刷新整页

我想每2秒重新刷新一次div自动而不重新加载页面我怎么能用jquery做这个我尝试了一些解决方案但是如果可以帮助那会很好

conversation.PHP

<?PHP
        $hash =$run_con['hash'];
        while($run_message = MysqL_fetch_assoc($message_query))
            {

                 $from_id = $run_message['from_id'];
                 $message = $run_message['message'];

                $user_query = MysqL_query("SELECT `username` FROM `users` WHERE `id`='$from_id'");
                $run_user = MysqL_fetch_array($user_query);
                $from_username = $run_user['username'];


                echo "<div id='auto'<p><b>$from_username</b><br />$message</p>  </div>"; //reload this part every 2 seconds


            }
    ?>

<script>
    $(document).ready(function(){
    setInterval(function(){
    $("#auto").load('conversation.PHP'+$hash)
    }, 2000);
    });
 </script>

解决方法:

为了每2秒进行一次不刷新页面本身的查询,您需要使用jQuery和AJAX.为此,您应该使用每2秒调用一次的查询创建自己的文件.

让我们从jQuery开始吧.

要使此脚本实际工作,您需要包含jQuery.在页面上的HTML< head>< / head> -tags内,包括以下行

<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.js"></script>

没有这个,你就无法运行任何jQuery函数.现在你已经包含了这个,你可以构建实际的脚本.

为了解释它是如何工作的,我创建了一个名为ajaxCall的函数.此函数执行ajax.PHP中的脚本,当它成功时,它将ajax.PHP输出替换为当前页面上div上具有id div1的内容.加载页面时(ajaxCall();)执行此操作一次,之后每2秒执行一次.

<script>
function ajaxCall() {
    $.ajax({
        url: "ajax.PHP", 
        success: (function (result) {
            $("#div1").html(result);
        })
    })
};

ajaxCall(); // To output when the page loads
setInterval(ajaxCall, (2 * 1000)); // x * 1000 to get it in seconds
</script>

将此脚本放在您希望重新加载div1的同一文件中(当然,您可以将其重命名为任何您喜欢的,只是持久).

所以你的对话.PHP现在应该……

>包括jQuery库
>执行AJAX调用的脚本
>一个id为“div1”的div(< div id =“div1”>< / div>),其中将放置ajax.PHP内容.

至于你的ajax.PHP文件,这是你实际执行查询的地方.对于你的情况,那就是你放的地方

<?PHP
MysqL_connect("localhost", "user", "pass");
MysqL_select_db("database");

// Other variables needed to perform the query, such as $message_query
// needs to be here as well

while ($run_message = MysqL_fetch_assoc($message_query)) {
    $from_id = $run_message['from_id'];
    $message = $run_message['message'];

    $user_query = MysqL_query("SELECT `username` FROM `users` WHERE `id`='$from_id'");
    $run_user = MysqL_fetch_array($user_query);
    $from_username = $run_user['username'];

    echo "<p><b>$from_username</b><br />$message</p>";
}
?>

如果可以,您应该stop using mysql_* functions,因为它们已被弃用且不再维护.此外,使用MysqLi_ *或PDO将启用预准备语句的使用,以便您可以阻止SQL-injection.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐