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

时间:2015-11-29 11:05:21

标签: php jquery

我想每2秒刷新div <?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> 而不重新加载页面我怎么能用jquery做这个我尝试了一些解决方案但是如果可以帮助那就没有用呢

conversation.php

find

2 个答案:

答案 0 :(得分:3)

更改此行

$("#auto").load('conversation.php'+$hash)}, 2000);

到这个

$("#auto").load('conversation.php'+'<?php echo $hash?>')}, 2000);

因为$hash是PHP变量,但您不在PHP块中,因此无法访问它。

答案 1 :(得分:2)

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

让我们从jQuery开始。

要让这个脚本真正起作用,你需要包含jQuery。在页面上的HTML <head></head> - 标记内,包含以下行

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

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

为了解释一下这是如何工作的,我创建了一个名为ajaxCall的函数。此函数执行ajax.php内的脚本,当它成功时,它会在当前页面上将ajax.php的输出替换为div上具有标识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的同一文件中(当然,您可以根据需要重命名它,只是坚持不懈)。

所以你的conversation.php现在应该......

  • 包含了jQuery libary
  • 执行AJAX调用的脚本
  • ID为“div1”(<div id="div1"></div>)的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