Я хотел бы обновить div auto
каждые 2 секунды без перезагрузки страницы. Как я могу это сделать с помощью 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
(конечно, вы можете переименовать его как угодно, просто настойчивость).
Итак, ваш conversation.php
Php теперь должен иметь …
<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>"; } ?>
Вы должны прекратить использовать функции mysql_*
если можете, поскольку они устарели и больше не поддерживаются. Кроме того, использование mysqli_*
или PDO позволит использовать подготовленные инструкции, чтобы вы могли предотвратить SQL-инъекцию .
Изменить эту строку
$("#auto").load('conversation.php'+$hash)}, 2000);
к этому
$("#auto").load('conversation.php'+'<?php echo $hash?>')}, 2000);
Поскольку ваш $hash
является переменной PHP, но вы не находитесь внутри блока PHP, вы не можете получить к нему доступ.