- クライアントは、HTML POST フォームが表示される example.com/form.html に移動します
- クライアントはフォームに特定の情報を入力し、example.com/form.html に送信します。
example.com/form.html が POST リクエストを受信すると、クライアントは example.com/redirected.html にリダイレクトされます example.com/redirected.html のみにデプロイされている JavaScript。「バック」コントロールのiframeとajaxが関係している可能性があると思いますが、信頼できる解決策はまだ見つかりませんでした。
操作は同じドメインで行われるため、クロスドメインの問題は発生しません
3 に答える
いいえ、これは不可能だと思います。
あなたはどちらかでなければなりません
- 投稿された値を Cookie に保存する
- 投稿された値をサーバー側のセッション変数に保存する
- 投稿された値を GET パラメータとして新しい URL に追加します
- GET を使用して元のフォームを投稿し、投稿された値を
document.referer
新しいページから苦労して抽出します
プレーンなhtmlを使用してこれを行う方法はないと思います。一部のサーバー側言語 (PHP など) を使用すると、問題なく実行できます。
私は以前に同様の状況にありました.JSにデータを渡す方法は、PHPを使用して出力を準備するときにタグにデータを含めることです.
リダイレクト先の php スクリプトが、リダイレクト先のスクリプトから POST データを受け取ると仮定します。これを php コードに含めます。
<?php
echo '<script type="text/javascript">';
echo 'var postData = '.json_encode($_POST).';';
echo '</script>'
?>
これにより、javascript は POST 値に含まれるものを認識します。js から値にアクセスするには:
//assuming you need the value for $_POST['foo']
var foo = postData.foo;
// or if json is encoded as just an associative array
var foo = postData['foo'];
POST データがリダイレクトされたスクリプトに渡されない場合 (これが自動的に行われるかどうかを確認していません)、最初の php スクリプトの $_SESSION 変数に $_POST データを書き込むことができます。
<?php
$_SESSION['postdata']=$_POST;
?>
次に、リダイレクトされたスクリプトから SESSION からそれを取得します。
<?php
$postdata = $_SESSION['postdata']; //use this to create the inline script in the html
unset($_SESSION['postdata']; //empty this from the SESSION variables
?>
HTML5 では、localstorageを使用します。(答えは、オブジェクトを格納する方法を説明していますlocalstorage
- そこにフォームフィールドのオブジェクトを格納できます)。
ただし、 js を使用して投稿する際のデータを example.com/form.html に保存してから、example.com/redirected.html で取得する必要があります。form.html に js がないと、この方法ではこれができません。
これは、html5 を使用する予定で、そこにあまり多くのデータを保存しない場合に機能します。iirc には、ブラウザによって 5 ~ 10 MB の制限があります。