У меня есть одностраничное приложение (SPA), построенное с помощью DurandalJS v1.2, которое интегрируется с платежным шлюзом. SPA отправится на страницу платежного шлюза, выполнив обычную форму POST на свою страницу.Избегайте повторной отправки формы в SPA (без P-R-G)
После того, как пользователь закончил на странице платежных шлюзов, платежный шлюз затем выполнит форму POST обратно в мой SPA.
Поскольку это POST, я обрабатываю его на стороне сервера в ASP.NET MVC, визуализируя определение модуля require.js для различных отправляемых параметров формы, и этот модуль затем используется в модели представления, которая должна обрабатываться результат.
Это все работает отлично, я обрабатываю результат, а затем остаюсь на той же странице SPA. Это отличается от типичного веб-шаблона Post-Redirect-Get, поскольку SPA не делает никаких переадресаций.
Проблема заключается в нажатии кнопки обновления браузера, в результате чего открывается диалоговое окно подтверждения повторной отправки браузера (чего я не хочу).
Есть ли способ избежать этого, используя JavaScript или шаблон PRG - единственный способ?
Примечание: Кажется, что изменение window.location, document.location, а также использование history.replaceState не работают (по крайней мере, в Chrome).
Возможно, если я обновляю браузер и принимаю повторную отправку формы, так как я действительно изменяю хэш до этого, URL-адрес моего SPA, входящего в состав обновления, не является тем, который обрабатывает ответы платежного шлюза, и поэтому он не обрабатывает его во второй раз. Тем не менее, диалог подтверждения все еще раздражает. – jamiebarrow