フォームを作成し、送信ボタンをクリックします。
1.1. 同じファイルにあるタスクを実行したい(dbタスク) AND 2.フォームのデータをリダイレクトしてtest.phpに送ってほしい。
以下は私のコードです
<?php
if(isset($_POST['btn'])){
//do some task
?>
<script type="text/javascript">
var e = document.getElementById('testForm'); e.action='test.php'; e.submit();</script>
<?php
}
?>
<form name="testForm" id="testForm" method="POST" >
<input type="submit" name="btn" value="submit" autofocus onclick="return true;"/>
</form>
しかし、onClickでjavascriptのコードを呼び出すと動作します。このコードの問題点は何でしょうか?
if関数内でjavascriptをエコーするだけです。
<form name="testForm" id="testForm" method="POST" >
<input type="submit" name="btn" value="submit" autofocus onclick="return true;"/>
</form>
<?php
if(isset($_POST['btn'])){
echo "
<script type=\"text/javascript\">
var e = document.getElementById('testForm'); e.action='test.php'; e.submit();
</script>
";
}
?>
すべてのJSをこのように設置することで、HTMLの準備が完了する前に実行されることはありません。
$(document).ready(function() {
// some code here
});
これがjQueryであることを忘れずに、headセクションに入れてください。また、Why you should use jQuery and not onloadも参照してください。