Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.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/2/jquery/81.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
Php 使用带有多个提交按钮的AJAX_Php_Jquery_Ajax_Form Submit - Fatal编程技术网

Php 使用带有多个提交按钮的AJAX

Php 使用带有多个提交按钮的AJAX,php,jquery,ajax,form-submit,Php,Jquery,Ajax,Form Submit,我有一个html表单,其中包括2个提交按钮 这两个submit按钮连接到一个php文件,该文件根据submits命令运行语句。php文件运行正常,尽管当我使用AJAX发送数据和防止重定向时,信息没有到达php文件,尽管在测试时php语句工作正常 有趣的是,当我使用一个只有一次提交而没有if/else的PHP时,信息到达PHP进行处理,而没有重定向,因此问题可能在于两次提交,因为我的AJAX无法处理或区分提交 我附上我的密码 HTML <input type="submit" name="f

我有一个html表单,其中包括2个提交按钮

这两个submit按钮连接到一个php文件,该文件根据submits命令运行语句。php文件运行正常,尽管当我使用AJAX发送数据和防止重定向时,信息没有到达php文件,尽管在测试时php语句工作正常

有趣的是,当我使用一个只有一次提交而没有
if/else
的PHP时,信息到达PHP进行处理,而没有重定向,因此问题可能在于两次提交,因为我的AJAX无法处理或区分提交

我附上我的密码

HTML

<input type="submit" name="first_submit" value="Frist" /> 
<input type="submit" name="second_submit" value="Second" />

尝试使用此代码阻止默认操作

Jquery

event.preventDefault()


因此,事件的默认操作不会被触发

您可以创建并使用一些会话变量来轻松实现它

例如$_会话['validate']

按钮的HTML和PHP代码

<button type="submit" id="first_submit" style="<?php echo isset($_SESSION['validate'])?'display:none':'';?>">first submit</button>
<button type="submit" id="second_submit" style="<?php echo isset($_SESSION['validate'])?'':'display:none';?>">second submit</button>

```$('#表单')。在('click',functi
..应该在“submit”事件上,而不是在click事件上。此外,您需要将
数据:$(this.serialize()``更改为
数据:$('#表单')。serialize()
使用..并再次单击按钮您使用该程序的方式是错误的。为什么需要两个提交按钮?对不起,我使用了“提交”,只是测试后的“单击”仍保留在这里。我更正了我的代码。@Sloarthrasher
$(此)。serialize()
应该工作得很好,因为上下文将是表单元素。不幸的是,我得到了相同的结果,提交没有到达
PHP
进行处理。如果我使用一个提交,代码工作得很好。
if (isset($_POST['first_submit'])) {
             //do something

    } 
    elseif (isset($_POST['second_submit'])) {
               //do something
    }

    else {
    //do something
    }

?> 
<button type="submit" id="first_submit" style="<?php echo isset($_SESSION['validate'])?'display:none':'';?>">first submit</button>
<button type="submit" id="second_submit" style="<?php echo isset($_SESSION['validate'])?'':'display:none';?>">second submit</button>
<script>
    $(document).ready(function(){

        $("#form").on('submit', function(e){
            e.preventDefault();
            $.ajax({
                type: 'POST',
                url: 'handler-file.php',
                data:  new FormData(this),
                dataType: "json",
                enctype: 'multipart/form-data',
                contentType: false,
                cache: false,
                processData:false,
                error:function(error){
                    //your required code or alert
                    alert(error.responseText);
                },
                success: function(response){
                    if(response.status=='1')
                    {
                        //your required code or alert
                        $('#first_submit').hide();
                        $('#second_submit').show();
                    }
                    else if(response.status=='2')
                    {
                        //your required code or alert
                        $('#first_submit').show();
                        $('#second_submit').hide();
                    }
                    else
                    {
                        //your required code or alert
                    }
                }
            });
        });

    });
    </script>
<?php
session_start();

$result['status']='0';
$result['error']='';

if(!isset($_SESSION['validate']))
{
    if(!isset($_FILES['file'])) 
    {
        $result['error'].='[Er-02 file missing!]';
    }
    else
    {
        //your other code
        $_SESSION['validate'] = true;
        $result['status']='1';
    }
}
else if($_SESSION['validate']==true)
{
    if(!isset($_FILES['file'])) 
    {
        $result['error'].='[Er-03 Validation file missing!]';
    }
    else
    {
        //your other code
        unset($_SESSION['validate']);
        $result['status']='2';
    }
}
else
{
    $result['error'].='[Er-01 Invalid source!]';
}
echo json_encode($result);