2017-01-04 3 views
0

Я написал следующий код, и я ищу небольшую помощь в отношении отправки формы в тот же PHP-файл, но через JavaScript.Отправить на эту же страницу PHP через JavaScript

<?php 
if(isset($_POST['go'])) { 
    header('location: index.php'); 
} 
?> 

<html> 
    <head> 
     <script> 
      function gogo() { 
       document.form1.submit(); 
      } 
     </script> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
    </head> 
    <body> 
     <form method="POST" name="form1" id="form1" action="example.php" /> 
      <input type="button" value="go" name="go" id="go" onclick="gogo();"/> 
     </form> 
    </body> 
</html> 

Это не работает. Можете ли вы предложить мне, где я ошибаюсь?

+0

атрибут удалить действие из формы. и замените 'onclick =" this.form.sumit() "' –

+0

Удалите все Javascript, измените тип ввода для отправки, и вы, вероятно, все в порядке :) –

+0

Но мне нужно сделать это из кода javascript. Так как я ищу проверку через javascript. Только если элементы управления действительны, я ищу для отправки вручную через javascript. – FreeKrishna

ответ

0

Проблема здесь состоит в том, что, поскольку вы используете JavaScript для отправки формы, «идут» -input не активируются. Очевидная (и очень чистый) решение было бы обрезать все JavaScript:

<?php 
if(isset($_POST['go'])) { 
    header('location: index.php'); 
} 
?> 

<html> 
    <head> 
    </head> 
    <body> 
     <form method="POST" action="example.php" /> 
      <input type="submit" value="go" name="go" /> 
     </form> 
    </body> 
</html> 

Однако, если вы хотите использовать форму проверки в JavaScript, вероятно, вы должны сделать что-то вроде:

<script> 
    function validateForm() { 
     if(true/*check here*/) { 
      return true; 
     } else { 
      return false; 
     } 
</script> 
<form onsubmit="return validateForm();"> 
    ... 
</form> 

Если вы являются (по любой причине) действительно очень уверены, что вы хотите использовать яваскрипт представления в соответствии с просьбой в вашем посте, вам просто нужно добавить скрытый вход с именем путем:

<form ...> 
    <input type="hidden" name="go" value="" /> 
    ... 
</form> 
+0

Это не мой фактический код. Я представил это как манекен, чтобы посмотреть, как я могу сначала проверить через javascript, а затем вручную отправить через js снова. Мне не нужна форма для отправки автоматически. – FreeKrishna

+0

проблема с методом возврата заключается в том, что if (isset ($ _ POST ['go']) будет обнаруживать и автоматически отправлять и выполнять код, за которым следует, независимо от того, возвращает ли javascript true или false. – FreeKrishna

+0

Ваш комментарий на самом деле не имеет смысла (по крайней мере, для меня). Существует вероятность того, что правильное форматирование изменит это :) Опять же, это может и не так. –

0

Попробуйте

document.getElementById("form1").submit(); 
+0

Нет, он не работает. Должно ли $ _POST содержать имя формы или имя кнопки? Я смущен.Поскольку кнопка может не иметь события отправки. – FreeKrishna

-1

использовать JQuery в Стид

<script> 
    $(document).ready(function() { 

     $("#Go").click(function() { 
      var data = $("#form1").serialize(); 

      $.ajax({ 

       type:"POST", 
       data:data, 
       url:"example.php", //page where you want to submit the form 
       success:function (data) { 
        // response from the server in browsers console 
        console.log(data) 
       } 
      }); 
     }); 

    }); 
</script> 

убедитесь изменить <input type="submit" value="go" name="go" />

в <button id="Go" name="Go">Go</button>

+0

Итак, нет способа сделать это через простой старый javascript? – FreeKrishna

+0

хорошо, это лучше, если вы хотите отправить форму на ту же страницу. – Divyank

+0

Я действительно не хочу использовать ajax или jquery для выполнения этой простой задачи, если это возможно. Если это не так, у меня не будет выбора, кроме как переключиться на ajax. – FreeKrishna

0

Попробуйте

<html> 
    <head> 
     <script> 
      function gogo() { 
       document.form1.submit(); 
      } 
     </script> 

    </head> 
    <body> 
     <form method="POST" name="form1" id="form1" action="" /> 
      <input type="submit" value="go" name="go" id="go" /> 
     </form> 
    </body> 
</html> 
+0

Функция gogo() здесь никогда не вызывается. И даже если бы она была вызвана через onclick = "gogo();", следующий код также будет выполнен, независимо от того, что делает gogo(). – FreeKrishna

Смежные вопросы