Автообновление AJAX, делающее видимой только последнюю запись!

#php #mysql #ajax

#php #mysql #ajax

Вопрос:

Я новичок в PHP. Я хотел создать форум, где пользователи могут задавать вопросы.Я использую ajax для автоматического обновления страницы.Но это создает некоторые проблемы…

Во-первых, если я создам этот конкретный div, где будет отображаться самый последний вопрос, будет отображаться обновление только последнего вопроса . позвольте мне очистить это с помощью ex :

  1. Пользователь A открывает форум
  2. Он получает вопросы qlatest, q1, q2, q3 . Где div, содержащий qlatest, обновляется каждые 1 секунду
  3. Пользователь B публикует вопрос qlatest2
  4. qlatest заменен на qlatest2 !

Теперь я должен сделать весь div, содержащий все вопросы, make refresh?

Ответ №1:

Если я правильно понимаю, вы хотите создать что-то вроде ленты Twitter, где последние элементы отображаются друг над другом.

Причина, по которой обновляется весь DIV, заключается в том, что вы переписываете весь внутренний HTML этого DIV. Чтобы избежать этого, используйте .appendChild() и запрограммируйте свой файл обратного вызова PHP так, чтобы извлекать из базы данных только последнюю запись.

http://www.ezineasp.net/post/Javascript-Append-Div-Contents.aspx

В jQuery также есть несколько очень полезных функций, добавляющих дочерние элементы. Я предлагаю использовать библиотеку Javascript, если вы новичок в вызовах AJAX.

Ответ №2:

Вы должны:

  1. Добавьте какой-нибудь источник данных, который возвращает последний заданный вопрос.
  2. Вызовите этот источник данных с постоянным интервалом и загрузите возвращенный вопрос в div..

Проще всего объяснить следующее решение: напишите код JavaScript, который использует встроенную в JS функцию setInterval() для загрузки, например. сценарий last_question.php в div. Вы можете сделать это, например. используя функцию jQuery load(), которая может выглядеть, например. вот так (при условии, что ваш div имеет идентификатор «last_question»):

 jQuery('#last_question').load('last_question.php');
  

Конечно, это можно оптимизировать. Чтобы сделать это, прочитайте о:

  1. Длительный опрос
  2. Формат JSON
  3. jQuery.requestJSON() Функция jQuery
  4. Возможно, некоторые эффекты сделают изменение вопроса более плавным (например, выдвижение и вставку)