Отправить сообщение с PHP + AJAX - PullRequest
0 голосов
/ 08 февраля 2011

Context

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

Первый вопрос: Стоит ли просто забыть об этом и использовать только PHP?

Акция

Пользователь пишет что-то в <textarea></textarea> и нажимает на <a id="myPostSubmit">Submit</a>, который является обработчиком, которым я буду управлять в скрипте jQuery, с чем-то вроде $("#myPostSubmit").live('click', function() { /* here i make the ajax call */ });. Если сообщение будет успешно отправлено, мы собираемся что-то сделать (я расскажу об этом в следующем разделе), либо мы будем предупреждать пользователя, используя мою функцию showAlert(text), которая показывает черный ящик в течение 4 секунд с text в нем.

Второй вопрос : Должен ли я управлять событием click любым другим способом? Должен ли я создать функцию, такую ​​как sendpost(post), и прикрепить ее к событию HTML onclick=""?

Если сообщение успешно отправлено

Я бы открыл обсуждение двух вариантов:

  1. Мы обновляем страницу [на самом деле не загрузка всей страницы, но создание другой вызов AJAX, который извлекает публикует списки и заставляет исчезнуть старый, загрузите файл PHP в получить новые сообщения (в том числе тот, который мы только что отправили), а затем сделать список сообщений появляется]. Pro : 1) Мы уверены, что то, что пользователь читает после загрузки списка сообщений, является реальным отправленным сообщением. Так что это на самом деле дважды проверяет действие. 2) Загружаем также несколько возможных постов, отправленных тем временем. Минусы : 1) Мы должны создать файл PHP, который получает шаблон списка сообщений, разрезая шаблон этой страницы на 2 файла. 2) Мне это не кажется гладким.

  2. Мы просто используем Javascript, чтобы получить шаблон поста, добавить его в список. Pro : 1) Мы делаем это действительно плавно, без перезагрузки всей страницы. 2) Нам не нужен PHP-файл для перезагрузки страницы. Мы просто используем Javascript (jQuery). Минусы : 1) Как мы можем получить шаблон post html, чтобы добавить его в список? 2) Как мы можем получить пользовательскую (зарегистрированную) информацию без PHP?

Третий вопрос : Лучше 1-е или 2-е решение? Вы бы предложили еще лучшее 3-е решение?

Страница PHP

Страница PHP, которая получит этот вызов AJAX: ?p=action&a=sendpost. Страница требует установки $_POST['myMessage'], а не пустой и ничего больше. Сама страница получит всю информацию о пользователях из файлов cookie и сможет выполнить необходимый запрос.

Заявка

Он разделен на 3 части: Приложение , Шаблон , Библиотека . По сути, каждая страница приложения имеет собственный файл .app.php и .tpl.php.

  1. Файл .app.php управляет зданием основы страницы, используя классы и другие вещи из библиотеки. В в нашем случае он извлекает данные из базы данных и положить их в переменная.
  2. Шаблон вызывается в конце файла .app.php. Файл .app.php отправляет в шаблон извлеченные данные, а файл .tpl.php выводит их.
  3. Библиотека содержит классы и функции, которые нам нужны в файле приложения.

Четвертый вопрос: Это хороший способ управления моим веб-приложением?

Редактировать: А как насчет возврата пользователю сообщения с предупреждением?

Я читал о параметре внутри $.ajax(), который будет управлять ответом в случае успеха или ошибки. Документация об этом очень проста, и я не получил это.

Пятый вопрос: Как вернуть (из файла PHP) ошибку или успех?

Ответы [ 2 ]

1 голос
/ 08 февраля 2011

Первый вопрос: Должен ли я просто забыть об этом и использовать только PHP?

Что ж, ваше приложение будет транслировать JavaScript, если вы используете ajax, в эти дни я думаю, что это прекрасно;)

Второй вопрос. Должен ли я управлять событием щелчка любым другим способом? Должен ли я создать функцию, например sendpost (post), и прикрепить ее к событию HTML onclick = ""?

Создание функции и привязка по клику. Код будет более читабельным;)

Третий вопрос: лучше 1-е или 2-е решение? Вы бы предложили еще лучшее 3-е решение?

Мое решение: ajax отправляет форму и при обратном вызове вставляет новый комментарий в список или отображает сообщение об ошибке, если пользователь не может комментировать. Проверьте jQuery serilize () для отправки данных форм с помощью ajax.

Четвертый вопрос: это хороший способ управления моим веб-приложением?

Это просто отлично;) Когда ваше приложение станет больше, вам придется его перепроектировать, но не делайте этого, делайте это, когда с текущим решением становится трудно работать. Прочитайте хорошую книгу по созданию инфраструктуры MVC. И по шаблонам программирования в целом.

1 голос
/ 08 февраля 2011

Похоже, вы на правильном пути со всем.Существует много мнений, называемых «лучшими практиками» о том, как точно прикреплять обработчики событий, как перезагружать данные на странице и как организовать ваше приложение и т. Д., Но я лично предпочел бы создать больше программного обеспечения, чем беспокоиться о таких деталях,Подробности в конечном итоге придут к вам.

Лично я считаю, что обновление целых кусков рендеринга HTML на стороне сервера является более надежным решением, но я видел людей, получающих отличные результаты с помощью шаблонов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...