ボックスの選択した値に応じて<select>
、別のページに送信したいフォームがあります。
<select>
これを行うための最良の方法はわかりませんが、おそらく最良の方法は、常に投稿する中間ページを用意し、中間ページにボックスから送信された値をチェックさせ、POST値をに転送することだと思います。それが何であるかに応じて異なるページ。これが最善の方法である場合、どうすればそれを行うことができますか?そうでない場合、最善の方法は何ですか?
ありがとう!!
それは確かにユーザーの互換性のための最良の方法でしょう。
HTTPリダイレクトヘッダーを使用してそれを行うことができます。
header("Location: http://www.example.com/");
これは、ページに出力される前に呼び出す必要があります。
そうすれば、ユーザーは進む/戻るボタンを押したときに中間ページにたどり着くことさえありません。
私が見る他の唯一のオプションは、javascriptを使用してフォームのターゲットを変更するか、それらの行を変更することですが、いくつかの注意点があります(javascriptを有効にする必要があり、より複雑なコード、リダイレクトは実際にはページのビューで発生しないはずです)。
THatは良い方法です。action
別の方法は、Javascriptを使用してクリックをインターセプトし、フォームとそのプロパティを書き直すsubmit()
ことです。
ただし、PHPの場合:
先頭ページ:
<form action="intermediary.php" method="post">
<input id="submitTo">
<select value="1">goToFirstPage</select>
<select value="2">goToSecondPage</select>
</input>
</form>
2ページ目:
<?php
$url = "";
if($_POST["submitTo"] == "1") $url = "http://mysite.com/firstPage.php";
if($_POST["submitTo"] == "2") $url = "http://mysite.com/secondPage.php";
header ("Location: $url");
?>
最初のページに実際のURLを入れないでください。そうしないと、セキュリティ上の大きな問題が発生します。
javascriptを使用してフォームのターゲットを変更します
本当にphpを使用したい場合は、curlを試してください。
javascript
function form_submitted(){
switch(document.myform.select_name.value){
case 'whatever':
document.myform.target.value = "whatever_you_need";
break;
case 'whatever2':
document.myform.target.value = "whatever_you_need_2";
break;
}
}
次に、この関数を「onSubmit」属性を使用してフォームに割り当てるか、その関数を呼び出して関数の最後にdocument.myform.submit()を追加するボタン(送信ボタンではなく)を用意します。