Как написать код JavaScript внутри php

у меня есть форма, нажав на кнопку отправить:

Я хочу выполнить какую-то задачу в одном и том же файле (задача БД) И Я хочу, чтобы данные формы отправлялись в 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>

но не могу отправить форму, если я вызываю код javascript на onClick, он работает. В чем проблема в этом коде, есть ли обходной путь для этого

 yent15 мая 2012 г., 09:42
Довольно логично, ваш javascript запускается в тот момент, когда он выводится в браузере, а ваша форма печатается ... после этого. Вы должны заключить свой код в прослушиватель событий window.onload, чтобы он выполнялся только после завершения загрузки страницы.

Ответы на вопрос(3)

поскольку DOM загружен не полностью. Самое простое решение - поместить блок скрипта после формы.

Другим решением будет захватитьwindow.onload событие или используйтеjQuery library (перебейте, если у вас есть только этот JavaScript).

Решение Вопроса

Просто повторить JavaScript внутри функции if

 <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>
        ";
     }
  ?>
 chiborg16 мая 2012 г., 11:50
Пожалуйста, обратите внимание, что решение здесьн генерирование кода JavaScript с помощью PHP, но тот факт, что блок PHP идет после тегов формы, что означает, что элемент DOM 'testForm' инициализируется при выполнении JavaScript.

чтобы они не выполнялись до того, как ваш HTML будет готов

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

Помните, что это jQuery, поэтому включите его в раздел заголовка. Также см Почему вы должны использовать jQuery, а не onload

Ваш ответ на вопрос