通过jquery提交表单时,PHP中的isset验证失败

时间:2018-12-10 04:22:45

标签: php jquery

我通过jQuery提交表单后,if(isset)验证返回false,但是在没有jquery的情况下可以正常工作。我使用jQuery的原因是因为我需要提交多种表单:

按钮

<input class="btn btn-primary" type ="submit" id="myButton" 
name="create_record" value="Submit 1">

jQuery:

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

    $("#myButton").click(function (event) {
     event.preventDefault();
     $("#form1").submit();
   //       $("#form2").submit();
   });
  });
  </script>

PHP

<?php
 if(isset($_POST['create_record'])){
   $ecode = $_POST['ecode'];
   $ename = $_POST['ename'];
   $date = $_POST['date'];
   $jobRole = $_POST['jobRole'];
 }else{
   echo "did not receive anything";
 }

 ?>

总是得到“什么也没收到”。有人可以帮忙吗。

3 个答案:

答案 0 :(得分:1)

仅当通过单击按钮以传统方式提交表单时,才会发送“提交”按钮值。由于您是通过javascript提交表单,因此您需要明确包含“提交”按钮的值或以其他方式验证您的帖子数据。如果您需要单击的特定按钮的值,则应执行以下操作:

$("#myButton").click(function (event) {
    event.preventDefault();
    var el = '<input type="hidden" name="' + $(this).prop('name') + '" value="' + $(this).val() + '">';
    $("#form1").append(el).submit();
});

关于您一次提交多个表单的目标,我相信如果不使用here中讨论的Ajax,这是不可能的。如果您需要有关操作方法的指导,最好打开一个新问题。

答案 1 :(得分:0)

您的代码isset($ _ POST ['create_record'])可能为false或未接收到任何值。如果查询仅与jQuery一起在一个PHP文件中,则需要首先检查算法或使用var_dump()进行测试。其次,如果它不起作用,请为其提供替代解决方案。使用表单时请执行正确的HTML代码,或制作另一个PHP文件以仅用于接收发布目的。

<form action="directory_to_another_file" method="POST">
  <!-- SOME INPUTS HERE -->
  <input type="submit" value="Submit 1" name="create_record">
</form>

尝试测试所有代码。

答案 2 :(得分:0)

您必须将表单方法设置为“ POST”类型,如果要在同一页面中接收表单数据,则请清空“ action”键,否则请提供目标链接。

    <?php 
        if(isset($_POST['create_record'])){
            print_r($_POST);
        }
    ?>
    
    <form action="" method="POST" id="form1">
        <input type="text" name="create_record" value="Submit 1"/>
    </form>
    <a href="#" id="myButton"> Submit </a>

    <script>
        $(function(){
            $("#myButton").click(function (event) {
                event.preventDefault();
                $("#form1").submit();
            });
        })
    </script>

让我知道它是否对您有用。