Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过jquery提交表单时,PHP中的isset验证失败_Php_Jquery - Fatal编程技术网

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

通过jquery提交表单时,PHP中的isset验证失败,php,jquery,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 ()

在我通过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>

$(文档).ready(函数(){
$(“#我的按钮”)。单击(函数(事件){
event.preventDefault();
$(“#表格1”).submit();
//$(“#表格2”).submit();
});
});
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";
 }

 ?>

总是得到“没有收到任何东西”。请有人帮忙。

您的代码,isset($\u POST['create\u record'])可能是错误的,或者它没有收到任何值。如果您的查询与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>


尝试测试所有代码。

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


$(函数(){
$(“#我的按钮”)。单击(函数(事件){
event.preventDefault();
$(“#表格1”).submit();
});
})

只有以传统方式通过单击按钮提交表单时,才会发送提交按钮值。因为您是通过javascript提交表单的,所以需要显式地包含submit按钮的值,或者以其他方式验证post数据。如果您需要所单击的特定按钮的值,类似这样的操作应该可以:

$("#myButton").click(function (event) {
    event.preventDefault();
    var el = '<input type="hidden" name="' + $(this).prop('name') + '" value="' + $(this).val() + '">';
    $("#form1").append(el).submit();
});
$(“#我的按钮”)。单击(函数(事件){
event.preventDefault();
var el='';
$(“#form1”).append(el.submit();
});

至于您一次提交多个表单的目标,我相信如果不使用前面讨论的ajax是不可能的。如果您需要关于如何执行此操作的指导,最好打开一个新问题。

您可以发布所有html表单吗?除非您还修改了提交处理程序以不重定向/刷新页面,否则第二次表单提交可能无法按预期工作。查看billynoah的答案+评论,了解一些想法…一个愚蠢的建议。请尝试将
type=“submit”
更改为
type=“button”
Hi Jason,$\u POST['create\u record']不是false,因为如果表单提交时没有输入本身的jQuery,则其工作正常……仅当通过提交时返回falsejQuery@andy杰森实际上是对的。由于表单允许多个提交按钮,并且该按钮的数据仅添加到POST数据中,因此当按下该按钮时,jquery版本(不按下任何按钮)将不包括该按钮的数据。因此,Jason是正确的,尽管答案可以改进。因为这是一个if-else条件,它将确定它是真是假。因为op说,表单在未通过jquery提交时可以工作,可以安全地假设,表单已经有了POST方法。嗨,Sahid,尝试过了,仍然没有运气…计算$u POST['create_record']结果是空的,而仅仅$_POST得到的数据是正确的诊断,我相信默认情况下在原始表单中包含隐藏字段,并从提交按钮中删除名称可能是首选,尽管(更简单的js代码,总体上更一致的策略)@Jakumi-我同意,但是op可能有几个提交按钮,需要捕获所有表单中单击的按钮的值。我不太确定,但默认情况下不是
。submit()
刷新/转发页面吗?同时提交两个表单可能会产生奇怪的结果。如果它没有刷新页面,添加一个隐藏元素会导致奇怪的结果,在第一次按下按钮后,另一个按钮被按下(因为动作名称编码在字段名而不是字段值中,添加另一个隐藏元素会导致两个分支都运行)@Jakumi-我相信你是正确的,但这是另一个问题。如果OP想要提交多个表单,他们需要使用ajax。我在这里回答的问题是为什么提交按钮值没有通过。@billynoah…按照建议尝试了…if(isset($\u POST['create\u record']){条件现在没有失败,但是$\u POST['create\u record']是空的