Каков наилучший способ повторно заполнить форму и отобразить ошибки с помощью no-script?
-
05-07-2019 - |
Вопрос
Я создаю приложение, которое использует вызовы ajax для проверки формы и некоторые другие, проблема в том, что мне не нравится, когда эти ошибки проверки появляются на новой странице вообще без css, а форма полностью сбрасывается без javascripts.
Я говорю о дюжине форм, так что пользователю будет довольно неприятно просматривать формы снова и снова.
Я прочитал несколько ответов по этой теме, но есть ли конкретный способ, наилучшая практика для подобной ситуации (больше похоже на проверку формы)?
Приношу извинения, если ответ уже есть.
Редактировать:
Все проверки выполняются на стороне сервера, в настоящее время ошибки отображаются с помощью ajax.Что бы мне хотелось, так это удобный метод повторного заполнения формы и отображения ошибок без javascript, если при обработке формы возникает ошибка.
Решение
Я не уверен, подразумеваете ли вы своим вопросом, что вы не выполняете проверку на сервере - это считалось бы огромной дырой в безопасности, поскольку совершенно очевидно, что формы можно обойти, просто отключив Javascript.Вы должны каждый раз проходить проверку на сервере, в то время как проверку на стороне клиента просто приятно выполнять.
Более того, "проблема" с самоустанавливающимися формами при перезагрузке страницы становится спорной, когда вы используете приличный фреймворк - в Python Django автоматически заполняет формы в случае ошибок.В PHP CakePHP и CodeIgniter делают то же самое, и я уверен, что большинство хороших фреймворков делают это, поскольку это подпадает под категорию "общих задач", от которых фреймворки должны абстрагироваться.
Всякий раз, когда я не использую фреймворк, я пишу свой собственный маленький класс Form, который удовлетворяет потребности.
Редактировать:
Я не знаю ничего, что вы могли бы подключить к тому, что вам нужно, чтобы иметь возможность повторно заполнить форму.Лучше всего написать для этого свой собственный небольшой урок, который должен занять не более 1 часа.
Другие советы
Что я обычно делаю, так это сохраняю все строки ошибок в массиве в переменной сеанса (я использую PHP).Если на стороне сервера произошла ошибка, перенаправьте пользователя обратно на страницу формы, проверьте, нет ли переменной сеанса, и отобразите ошибки соответствующим образом.Убедитесь, что вы отключили параметр session var, чтобы освободить память после его отображения.То же самое касается повторного заполнения формы -- values в session var.
Проверка формы должна быть сначала записана на сервере, а затем на клиенте.Вы должны проходить проверку на сервере в любом случае.Не полагайтесь на Ajax в чем-то столь простом и важном для работы вашего сайта, как проверка формы.Используя ненавязчивый скрипт, вы можете предотвратить отправку формы по умолчанию, а затем обработать форму с помощью Ajax.В противном случае разрешите отправке пройти проверку и ответить сгенерированной сервером страницей проверки.
Выполните свои проверки на стороне сервера и повторно заполните формы.
Проверка через AJAX - это неплохо, но не может быть приведен в исполнение.Таким образом, более эффективно выполнять проверки независимо от того, происходит AJAX или нет.Я бы предложил второй маршрут, который может обрабатывать проверки и передавать обратно массив ошибок в JSON для тех, у кого есть javascript.Но для тех, у кого нет javascript, единственный способ, которым ваши проверки будут работать, - это через серверную часть.
К сожалению, на самом деле у вас нет выбора в этом вопросе.Любой наполовину приличный программист или хакер с firebug может отредактировать ваш javascript, отсоединить хуки и обойти все, что вы пытаетесь сделать на его стороне:будьте параноиком и применяйте проверку на стороне сервера.