Обработка формы и ее действие: одна страница или две? - PullRequest
0 голосов
/ 18 января 2010

При веб-программировании существует два разных способа обработки формы и ее действия.Есть ли причина предпочитать один метод другому?

Метод 1: Одна страница, которая отображает форму или обрабатывает отправленную форму.Это кажется простым, в этом есть одна форма для всего.Но это также означает, что случаи if / else могут стать довольно большими.

if [form has not been submitted] {
    // display form for user input
} else {
    // handle submitted form
}

Метод 2: Обрабатывать ввод данных пользователем на одной странице формы, при этом форма отправляется на вторую страницу..

страница 1 (input.html):

<form action="./submit.html">
    // display form for user input
</form>

страница 2 (submit.html): обрабатывает ввод из формы.

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

Ответы [ 3 ]

2 голосов
/ 18 января 2010

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

После успешного сохранения записи я обычно использую метод Post / Redirect / Get , чтобы избежать распространенной проблемы множественной отправки.

0 голосов
/ 18 января 2010

Кэширование.

Если на сервере есть серия статических HTML-страниц, которые могут быть запущены, возможно, только AJAX (и даже эти запросы кэшируются на стороне сервера для каждого пользователя), это значительно снижает его нагрузку и трафик. Тогда ограничение динамического содержимого целей форм относительно небольшой областью - это благо, потому что страницу, которая является целью POST, нельзя извлечь из кэша, ее необходимо восстанавливать с нуля, независимо от того, насколько сильно она загружена. .

Конечно, это не решает вопрос о n статических страниц + 1 CGI против n статических страниц + m CGI. Но если вам не нужно выплевывать изощренный HTML, вам может быть выгодно просто перенаправить его, храня вещи в одном месте - проверка и обработка ошибок, аутентификация, управление сеансами и т. Д.

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

0 голосов
/ 18 января 2010

Я думаю, это зависит от того, какая это форма. Если у него слишком много проверок, я бы пошел с двумя страницами.

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

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