Передать переменную из php в ajax, и после из ajax в php

170
19 августа 2021, 02:40

Есть три файла load_messages.php (вывод сообщений) , chat.php(сама страница с чатом), add_mess.php (через что сохраняются сообщения в базу) . Суть такая. Нужно не обновляя страницу переключаться между диалогами (см. скриншот).

Далее. По нажатию на диалог слева, например "Админ", открываются сообщения с Админом. По нажатию на кого то другого, соответственно с другим. Код который в chat.php .

<script type="text/javascript" src="http://www.google.com/jsapi"></script> 
<script type="text/javascript"> 
  //Загружаем библиотеку JQuery 
  google.load("jquery", "1.3.2"); 
  google.load("jqueryui", "1.7.2"); 
 
  //Функция отправки сообщения 
  function send() 
  { 
    //Считываем сообщение из поля ввода с id mess_to_add 
    var mess=$("#mess_to_send").val(); 
     
	 
    // Отсылаем паметры 
       $.ajax({ 
		    
                type: "GET", 
                url: "add_mess.php", 
                data:"mess="+mess, 
                // Выводим то что вернул PHP 
                success: function(html) 
				 
				 
        { 
          //Если все успешно, загружаем сообщения 
          load_messes(); 
          //Очищаем форму ввода сообщения 
		   
          $("#mess_to_send").val(''); 
		  $("#chat-app").scrollTop(20000); 
                } 
        }); 
  } 
 
 
 
	//Функция загрузки сообщений 
	function load_messes() 
	{ 
		 
		 $.get('load_messages.php', {id:<?php echo $k['id'];?>}, function(data) { 
                    $('#user_data').html(data); 
					 
				 
				{ 
					//Очищаем форму ввода 
					  $('#user_data').html(data); 
					//Прокручиваем блок вниз(если сообщений много) 
					$("#chat-app").scrollTop(20000); 
                } 
        }); 
	} 
	 
	 
 
</script>	   

Код load_messages.php

<?php 
session_start(); 
 
if(isset($_POST['id'])) 
{ 
//Подключаемся к базе данных 
    include("bd.php"); 
  
//Записываем все в переменные 
    $user_id=$_POST['id']; 
 
 
 
$use=$_SESSION['login']; 
$usrid=$_SESSION['id']; 
// $delbtn = '<button class="btnDeleteAction" name="delete" onClick="callCrudAction(`delete`,echo $comments[$k]["id"];)">Delete</button>'; 
//Выбираем все сообщения 
$res=mysql_query("SELECT * FROM messages WHERE (user_id='$user_id' and from_user_id='$usrid') or (user_id='$usrid' and from_user_id='$user_id' ) ORDER BY 'date_create' LIMIT 45 "); 
 
//Выводим все сообщения на экран 
while($d=mysql_fetch_array($res)) 
{	 
	 echo ' 
	  
	  '; 
										 
										 
										if ($d['user_id'] == $usrid or $use == $d['login']) 
												{ 
                                           echo '<div class="direct-chat-msg right mb-30"> 
				   
				  <div class="direct-chat-text"> 
					<p>';echo $d['message']; echo'</p>'; 
                	// <p class="direct-chat-timestamp"><time datetime="2018">';echo $d['date_create']; echo'</time></p> 
				 echo ' </div> 
				  
				</div>'; 
												} 
                                                else { 
										 
										echo '<div class="direct-chat-msg mb-30" > 
				  <div class="clearfix mb-15"> 
					<span class="direct-chat-name">Админ #1</span> 
 
				  </div> 
				  <img class="direct-chat-img avatar" src="images/user1-128x128.jpg" alt="message user image"> 
				  <div class="direct-chat-text"> 
					<p>';echo $d['message']; echo'</p> 
					<p class="direct-chat-timestamp"><time datetime="2018">';echo $d['date_create']; echo'</time></p> 
				  </div> 
				  </div>'; 
										 
									 
					}				 
									 
							 
} 
} 
?>

Код сохранения вряд ли нужен, с ним все в порядке. Необходимо понять, как сделать по клику на диалог, вывод сообщений в чат именно с этим диалогом.

Answer 1

создаем атрибут на контейнер с блоком пользователя data-login="<?php echo $user['login']?>" Далее в js обрабатываем события клика на этот блок, с помощью js отправляем ajax c параметром login берем его из data-login, на сервере обрабатываем запрос с выборкой и отправляем полученные данные в наш файлик с чатом, а потом просто обрабатываем и добавляем контент

READ ALSO
Расстановка колонок в диаграмме

Расстановка колонок в диаграмме

Использую библиотеку Highchart ,по коду вроде как все правильно прописал но вместо того чтоб у каждого столбика было свое название ,они все под...

109
Для чего устанавливать поток в состояние fail()?

Для чего устанавливать поток в состояние fail()?

Из книги "ПрограммированиеПринципы и практика использования с++"

110
Сортировка строки,содержащей числа,не используя стандартные библиотечные функции.C++

Сортировка строки,содержащей числа,не используя стандартные библиотечные функции.C++

вообше то неправильно выполнить задание за вас, но я решил помочь вам кое в чемВо первых нужно сравнивать строки так, чтобы сравнивались...

215