#php #mysql #ajax
#php #mysql #ajax
Вопрос:
Я новичок в PHP. Я хотел создать форум, где пользователи могут задавать вопросы.Я использую ajax для автоматического обновления страницы.Но это создает некоторые проблемы…
Во-первых, если я создам этот конкретный div, где будет отображаться самый последний вопрос, будет отображаться обновление только последнего вопроса . позвольте мне очистить это с помощью ex :
- Пользователь A открывает форум
- Он получает вопросы qlatest, q1, q2, q3 . Где div, содержащий qlatest, обновляется каждые 1 секунду
- Пользователь B публикует вопрос qlatest2
- 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:
Вы должны:
- Добавьте какой-нибудь источник данных, который возвращает последний заданный вопрос.
- Вызовите этот источник данных с постоянным интервалом и загрузите возвращенный вопрос в div..
Проще всего объяснить следующее решение: напишите код JavaScript, который использует встроенную в JS функцию setInterval() для загрузки, например. сценарий last_question.php в div. Вы можете сделать это, например. используя функцию jQuery load(), которая может выглядеть, например. вот так (при условии, что ваш div имеет идентификатор «last_question»):
jQuery('#last_question').load('last_question.php');
Конечно, это можно оптимизировать. Чтобы сделать это, прочитайте о:
- Длительный опрос
- Формат JSON
- jQuery.requestJSON() Функция jQuery
- Возможно, некоторые эффекты сделают изменение вопроса более плавным (например, выдвижение и вставку)