我想每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
答案 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
现在应该......
<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。