Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.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
Javascript 使用js延迟函数时使用ISSET验证表单_Javascript_Php_Forms_Post_Isset - Fatal编程技术网

Javascript 使用js延迟函数时使用ISSET验证表单

Javascript 使用js延迟函数时使用ISSET验证表单,javascript,php,forms,post,isset,Javascript,Php,Forms,Post,Isset,我试图验证是否使用isset()发送了正确的表单,但当应用javascript延迟时,此验证不是TRUE。怎么会?通过POST方法检查是否提交了正确的表单的最佳方法是什么?请参阅下面的代码。也许一个隐藏的字段可以做到这一点,但我真的很想知道为什么下面的代码没有通过 <script type="text/javascript"> window.addEventListener('load', function onload(){ var ccform = document.getEle

我试图验证是否使用
isset()
发送了正确的表单,但当应用javascript延迟时,此验证不是
TRUE
。怎么会?通过
POST
方法检查是否提交了正确的表单的最佳方法是什么?请参阅下面的代码。也许一个隐藏的字段可以做到这一点,但我真的很想知道为什么下面的代码没有通过

<script type="text/javascript">
window.addEventListener('load', function onload(){
var ccform = document.getElementById('cc_form');
if(ccform){    
    ccform.addEventListener('submit', function before_submit(e){
        setTimeout(function wait(){
            // After waiting, submit the form.
            ccform.submit();
        }, 2000);

        // Block the form from submitting.
        e.preventDefault();
    });
 }
});
</script>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['cc_form_submit'])) {  
    //Send the form
    //Not working
    echo 'ready to send!';  
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {  
    //Send the form
    //Working
    echo 'ready to send without ISSET!';  
}
?>
<form action="" method="post" class="cc_form" id="cc_form"> 
    <button class="cc_form_submit" type="submit" name="cc_form_submit">Send!</button>
</form>

addEventListener('load',函数onload(){
var ccform=document.getElementById('cc_form');
如果(ccform){
ccform.addEventListener('submit',函数在提交之前(e){
setTimeout(函数等待(){
//等待后,提交表格。
ccform.submit();
}, 2000);
//阻止表单提交。
e、 预防默认值();
});
}
});
发送!

在您的示例中,有很多可能的解决方案:

解决方案1:

您可以在表单中使用隐藏值,然后在
isset()
方法中检查该值,如:

<form method="post">
  <input type="hidden" name="form1" />
  <button>Submit</button>  
</form>

<form method="post">
  <input type="hidden" name="form2" />
  <button>Submit</button>  
</form>

<?php
if(isset($_POST['form1'])){
    // do somthing
}

if(isset($_POST['form2'])){
    // do somthing
}
?>

提交
提交
解决方案2:

您可以使用输入类型submit而不是
,例如:

<form method="post">
  <input type="submit" name="form1">
</form>

<form method="post">
  <input type="submit" name="form2">
</form>

<?php
if(isset($_POST['form1'])){
    // do somthing
}

if(isset($_POST['form2'])){
    // do somthing
}
?>
<form method="post" action="form1.php">
</form>

<form method="post" action="form2.php">
</form>

解决方案3:

您可以对多个
使用不同的操作,如:

<form method="post">
  <input type="submit" name="form1">
</form>

<form method="post">
  <input type="submit" name="form2">
</form>

<?php
if(isset($_POST['form1'])){
    // do somthing
}

if(isset($_POST['form2'])){
    // do somthing
}
?>
<form method="post" action="form1.php">
</form>

<form method="post" action="form2.php">
</form>

编辑:

根据你的评论 不知道为什么($\u服务器['REQUEST\u METHOD']='POST'&&isset($\u POST['cc\u form\u submit']){不工作


它不起作用,因为您正在使用带有
name=
属性,在这种情况下,解决方案2将适用于您。

您希望在
延迟(2000)后使用jquery提交表单
?单击“提交”按钮后自动执行“否”。目前,我在同一页面上有多个表单,我想对使用$\u POST方法处理的正确表单进行额外验证。如果有多个表单,请使用操作。或者ajaxor使用隐藏值并签入isset(),或者您可以使用input type=“button”我没有感谢,而是知道这些解决方案不知道为什么
如果($\u SERVER['REQUEST\u METHOD']='POST'&&isset($\u POST['cc\u form\u submit']){
不起作用。@RobbTe:因为不能与name一起使用,所以需要使用输入类型提交解决方案2。。。