Как вызвать функцию javascript / написать скрипт внутри PHP echo

#php #javascript

#php #javascript

Вопрос:

Я написал фрагмент кода, ниже приведен код

 <script type="text/javascript">
function submitform()
{
    document.myform.action='http://mysite/index.php';
    document.myform.submit();
}
</script>

<?php
if(isset($_POST['submit_details']))
{
       echo "<script typ=javascript> submitform();</script>";
}

?>
<form id="myform">
  ------
  ------
<input type="submit" name="submit_details">
</form>
  

когда я пытаюсь отправить форму, она выдает мне документ с ошибкой.myform не определен, как решить эту ошибку

Комментарии:

1. В вашем написанном коде много неправильного. У вас есть синтаксические ошибки в вашем PHP-коде. Вы используете Javascript для выполнения чего-то, что браузер будет использовать <form action="http://mysite/index.php" method="GET"> , и если это index.php , тогда ваш PHP автоматически отправит форму снова … и снова … и снова…

Ответ №1:

document.myForm не определено при вызове скрипта, потому что он запускается до того, как элемент формы был получен браузером. Вам нужно поместить скрипт после тега формы или использовать обработчик document.onload событий (или аналогичный).

(Хотя совершенно непонятно, почему вы хотите автоматически и немедленно отправлять форму с помощью JS без того, чтобы ваш пользователь что-либо делал.)

Ответ №2:

Если это буквально ваш код, то в нем есть синтаксические ошибки.

Попробуйте:

 <?php if (isset($_POST['submit_details'])) { ?>
   <script type="text/javascript">submitForm();</script>
<?php } ?>
  

Комментарии:

1. я добавил приведенный выше код в конец страницы, форма отправляется, но значения формы пусты. форма отправки имеет пустую форму

Ответ №3:

Попробуйте переместить скрипт в нижнюю часть страницы или, что еще лучше, прослушайте событие window.onload. Когда скрипт загружается браузером, DOM еще не закончил загрузку и не может найти document.myForm.

Ответ №4:

Почему бы вам просто не поместить javascript submit внутри ввода вот так?

 <input type="submit" name="submitdetails" onclick="javascript:submitform();" />
  

Затем используйте $post с jquery для запуска страницы.

Комментарии:

1. Это javascript: лишнее.

2. Делая это, ему не пришлось бы вызывать функцию в php. Я думал, что это будет более эффективно.

3. Вам не нужно добавлять javascript: внутренние on* атрибуты элементов. Предлагать ему добавить jQuery на свою страницу излишне — зачем включать целую библиотеку JS, чтобы сделать что-то простое, что можно сделать быстро, легко, кроссбраузерно?

4. Значение onclick атрибута не является URL-адресом, поэтому вам не нужен протокол javascript. <input onclick="submitform()"> просто отлично. Не то, чтобы OP нуждался в javascript — они могли просто поместить действие в форму.

5. полезно знать. также я предложил jQuery только потому, что предположил, что это, вероятно, не единственная форма на его странице, а также функции, но я понимаю, что вы мне говорите. Спасибо!