我想每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.