1

支払いゲートウェイと統合する DurandalJS v1.2 で構築されたシングル ページ アプリケーション (SPA) があります。SPA は、支払いゲートウェイのページに通常のフォーム POST を実行して、支払いゲートウェイのページに移動します。

ユーザーが支払いゲートウェイのページを完了すると、支払いゲートウェイはフォーム POST を SPA に返します。

これは POST であるため、送信されるさまざまなフォーム パラメーターの require.js モジュール定義をレンダリングすることにより、ASP.NET MVC でサーバー側で処理します。このモジュールは、結果を処理する必要があるビュー モデルで使用されます。

これはすべて正常に機能しており、結果を処理してから、同じ SPA ページにとどまります。SPA はリダイレクトを行わないため、これは Post-Redirect-Get の一般的な Web パターンとは異なります。

現在の問題は、ブラウザーの更新ボタンを押すと、ブラウザーの再試行ポスト確認ダイアログが表示されることです (これは望ましくありません)。

JavaScript を使用してこれを回避する方法はありますか、それとも PRG パターンが唯一の方法ですか?

注: window.location、document.location の変更、および history.replaceState の使用はすべて機能しないようです (少なくとも Chrome では)。

4

1 に答える 1

1

支払いゲートウェイを変更できる場合は、フォームの送信をインターセプトし ( <form onsubmit="...; return false">)、ブラウザがフォーム フィールドをサーバーに送信するのではなく、JavaScript からフォーム フィールドを処理します。

支払いゲートウェイを変更できない場合はdocument.location、POST バックの直後に JavaScript から を変更します (たとえば、 を追加します#)。この後にユーザーがリロードを押しても、ブラウザーは確認を求めません。

于 2013-10-02T11:12:00.867 に答える