さらに、チェック済みのデータを php に送って、お問い合わせフォームならメールを送信したり、CMS ならデータをファイルに書き込むという流れにしている。その際に iframe を使うのだが、直接 iframe の src に php の url を書き、? 以降にデータを持たせ、php ではそれを $_GET で受け取ることもできるが、スマートではないし、CMS となると渡すデータが多いため、url の最大長も気になるところ。
なので、以下のようにしている。
◆html 側
<form id="sendForm" action="javascript:return false;" onsubmit="javascript:saveThis();" method="post" target="php">
input や select などのフォーム部品を書く
<iframe src="" name="php" width="1" height="1"></iframe>
<input type="submit" value="保存" />
</form>
input や select などのフォーム部品を書く
<iframe src="" name="php" width="1" height="1"></iframe>
<input type="submit" value="保存" />
</form>
◆javascript 側
saveThis() {
// チェックの処理を書く
// チェックをパスした場合に下記を実行
document.getElementById("sendForm").action = "php の url";
}
// チェックの処理を書く
// チェックをパスした場合に下記を実行
document.getElementById("sendForm").action = "php の url";
}
これで、見た目上画面遷移なく、DOM で入力チェックをし、php で処理を実行できる。php の最後にアラートでも出せば判りやすいのではないだろうか。form の action に予め php の url を書いてしまうと、チェック結果がなんであろうと送信してしまうので、初期値は javascript:return false; にしておく。
echo "<script type='text/javascript'>";
echo "alert('処理が終了しました。');";
echo "</script>";
echo "alert('処理が終了しました。');";
echo "</script>";
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.