Каков наилучший способ заполнить форму и отобразить ошибки без сценария? - PullRequest
1 голос
/ 16 июня 2009

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

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

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

Извинения, если ответ уже есть.

Edit:

Все проверки выполняются на стороне сервера, в настоящее время ошибки отображаются с помощью ajax. Что мне нужно, так это удобный метод для повторного заполнения формы и отображения ошибок без JavaScript, если при обработке формы возникает ошибка.

Ответы [ 4 ]

4 голосов
/ 16 июня 2009

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

Кроме того, «проблема» иметь самовосстановиться формы, когда страница перезагружается становится спорным, когда вы используете достойную основу - В Python, Django автоматически повторно заполняет формы в случае ошибок. В PHP CakePHP и CodeIgniter делают то же самое, и я уверен, что большинство хороших фреймворков делают это, так как они подпадают под категорию «общих задач», которые фреймворки должны абстрагировать.

Всякий раз, когда я не использую фреймворк, я пишу свой собственный маленький класс Form, который удовлетворяет потребности.

РЕДАКТИРОВАТЬ :

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

1 голос
/ 15 июля 2009

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

0 голосов
/ 16 июня 2009

Выполните проверки на стороне сервера и повторно заполните формы.

Проверка через AJAX хорошая , но не может быть применена. Таким образом, более эффективно выполнять проверки независимо от того, происходит ли AJAX. Я бы предложил второй маршрут, который может обрабатывать проверки и передавать массив ошибок в JSON для тех, у кого есть JavaScript. Но для тех, у кого нет javascript, единственный способ работы ваших проверок - через серверную часть.

У тебя, к сожалению, нет выбора. Любой наполовину порядочный программист или хакер с firebug может отредактировать ваш javascript, отсоединить хуки и обойти все, что вы пытаетесь сделать на его стороне: быть параноиком и проводить проверку на стороне сервера.

0 голосов
/ 16 июня 2009

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

...