обновить div для извлечения информации из базы данных без обновления всей страницы

Я хотел бы обновить 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> 

Related of "обновить div для извлечения информации из базы данных без обновления всей страницы"

Чтобы сделать запрос каждые 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 теперь должен иметь …

  • включая jQuery libary
  • сценарий для выполнения AJAX-вызова
  • div с id "div1" ( <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, вы не можете получить к нему доступ.