@QNA-1976

Хорошая ли идея обойти повторную отправку формы при помощи ajax?

Может я чего не понимаю, но в чём смысл обхода повторной отправки формы при помощи ajax?

Вводная: из БД берётся значение свойства и выводится в вид, отправляем форму (для теста без последующего редиректа), изменяем в обработчике значение этого свойства и пишем его в БД, но так как редиректа у нас нет, то данные берём не из БД (как это было бы при редиректе), а просто выводим в вид уже изменённое значение (потому что нужно текущее значение без повторной выборки из БД).

Кто-то поясните, как это делается при ajax, ведь его очень часто советуют в качестве обхода повторной отправки данных.

Ну так я аяксом отправлю запрос, а вид как я получу с текущими данными? Редиректом на jquery и выводом из БД? Браво. А если у меня свойство устанавливается только во время выполнения запроса без записи в БД (например тупо вывод сообщений без сессий), то как я в виде получу его значение, оно же потеряно будет РЕДИРЕКТОМ после ajax. Подгрузкой данных в стиле SPA? Тогда зачем вообще предлагать ajax для такого обхода, такой костыль отпадает сам собой при SPA)))

Может я что-то не так понимаю?

Сам применяю токен на форме и фиг с ним с сообщением браузера о повторной отправке, главное что форма не обрабатывается при несовпадении хоть ты заобновляйся.
  • Вопрос задан
  • 204 просмотра
Решения вопроса 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Аякс транспорт, а запрет повторной отправки это серверная логика.

Стандартная практика добавлять поле в бд concurrency token и уже по нему смотреть что делать с этим запросом.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
Хорошая.

У тебя просто в голове смешалось два понятия, запрет повторной отправки == редирект.
Забудь про редирект. Он при аяксе не нужен.
Лучше выучи получше. ч то такое аякс. Тогда дурацких вопросов типа "как я получу с текущими данными" возникать не будет. Потому что аякс это как раз про то, как получить данные с сервера. Без всяких редиректов. Вот как здесь, на этом форуме, ты отправляешь ответ или комментарий.

Если же после отправки формы тебе обязательно нужен редирект (о чем ты, разумеется, не упомянул в вопросе), то тогда без разницы, что использовать.
Ответ написан
@DHARMA373
Жуниор
Я совершенно ничего не понял. Аякс это технология позволяющая получать данные без перезагрузки страницы. Им ничего нельзя проверить. Только отправить и получить данные. Проверку заполнения формы не обязательно делать на стороне клиента на том же Jquery, можно на северной части и потом получить код статуса, но конечно лучше все проверять до отправки и после.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы