Вопрос по реализации формы в простейшем модальном окне
В странице имеется скрытый div-элемент с содержимым. Данный элемент и будет модальным окном. При клике на странице на определенную кнопку, данный div становится видимым, т.е. модальное окно отображается. Допустим в этом div-е (окне) есть форма – поле ввода (text) и кнопка (submit). Задача простая: необходимо чтобы после ввода текста и нажатия кнопки, введенные данные уходили на сервер (например серверный скрипт записывал бы текст в базу данных). Короче говоря, не важно что будет происходить на сервере. Важно то, что если на сервере происходит какая либо ошибка (например, формат введенных данных неправильный), то сервер должен вернуть код ошибки и ошибка должна быть выведена в том же модальном окне.
На сервере обработкой данных занимается php-скрипт (впрочем это тоже не так важно).
Грубо говоря, я могу создать модальное окно, вывести в него какие-нибудь данные, ссылки и пр. И, например, по ссылке «закрыть» закрыть это модальное окно. Но вот как по нажатию на кнопку не закрыть окно а отправить данные на сервер, получить ответ и вывести его в окне – не знаю. А в идеале, если ошибки на сервере не произошло, то закрыть окно.
Данная ситуация актуальна, например, для случая авторизации. Скажем пользователь ввел в окно логин и пароль, запрос ушел на сервер (окно в это время еще отображается), сервер обработал данные и вернул результат: либо авторизация прошла и все ок, либо авторизация не прошла (например в базе нет пользователя с таким именем). В зависимости от результата в окно либо должно вывестись сообщение об ошибке («пользователя с таким именем не существует»), либо окно должно закрыться (если ошибки нет).
Правильно ли я понимаю логику: после ввода данных и нажатия кнопки, данные спомощью ajax-запроса уходят на сервер, серверный скрипт обрабатывает данные и посылает обратно ответ. Ответ анализируется и если ошибка, то выводим ее в окно, если ошибки нет, то вызываем функцию закрытия окна?
Я умышленно пока не пытаюсь разбираться с множеством готовых виджетов модальных окон (например Dialog UI), а пытаюсь создать свое простейшее окно, чтобы разобраться с темой.
|