Каков наилучший способ повторно заполнить форму и отобразить ошибки с помощью no-script?

StackOverflow https://stackoverflow.com/questions/1003132

  •  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, отсоединить хуки и обойти все, что вы пытаетесь сделать на его стороне:будьте параноиком и применяйте проверку на стороне сервера.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top