web-dev-qa-db-ja.com

php内でjavascriptコードを書く方法

送信ボタンをクリックすると、フォームがあります:

  1. 同じファイルでいくつかのタスク(dbタスク)を行いたい
  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コードを呼び出すと機能します。このコードの問題は何ですか。

32
n92

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>
        ";
     }
  ?>
57
keto23

このようにすべてのJSを設定できるため、HTMLの準備ができる前に実行されません

$(document).ready(function() {
   // some code here
 });

これはjQueryであるため、ヘッドセクションに含めてください。 onloadではなくjQueryを使用する理由 も参照してください。

6
nischayn22

スクリプトの実行時には、DOMが完全にロードされていないため、ボタンは存在しません。最も簡単な解決策は、フォームの後にスクリプトブロックを配置することです。

別の解決策は、window.onloadイベントをキャプチャするか、 jQueryライブラリー (このJavaScriptが1つしかない場合はやり過ぎ)を使用することです。

4
chiborg