2

所以我的问题是当我将表单提交到 PHP 时,我的问题是使用 jQuery 通过 AJAX 提交表单,使用 jQuery AJAX 时提交表单的按钮无关紧要,但是当使用表单操作时,表单提交并让我知道删除或更新按钮被按下。例如这里是提交表单的 HTML

<input type="submit" name="update" value="Update">
<input type="submit" name="delete" value="Delete">

这是下面的 AJAX 调用。

$(document).ready(function() {
    $("#update-form").submit(function () {
    $.ajax({  
      type: "POST",
      url: "updateHandler.php",  
      data: $("#update-form").serialize(),
      success: function(data) {
            var login = JSON.parse(data);
            if (login.success) {
                alert(login.message); //Show the ticket was updated!
            } else {
                alert(login.message);
            }
      }
    });  
    return false;       
  });
});

现在这是我的 AJAX 调用的 PHP 代码。

<?php
    $json_data = array();
    if(isset($_POST['delete'])) {
        $json_data['message'] = 'Ticket was deleted!';
    } else {
        $json_data['message'] = 'Ticket was updated!';
    }


// Encode response as JSON
echo (json_encode($json_data));

?>

编辑

在被要求提供控制台输出后,这就是我得到的

如果来自 adeneo 答案中的代码,则“没有按下按钮”

{"success":true,"message":"没有按下按钮"}

大批
(
    [票号] => 6
    [技术员] => 1
    [类别] => 1
    [电子邮件] => nstark@mail.com
    [名称] => 内德史塔克
    [国家] => 加拿大
    [问题] => 我对产品 Y 有疑问
)
4

1 回答 1

3

发生的事情是按钮没有与表单一起序列化,因为当以编程方式提交 for 时,它不知道您按下了哪个按钮,所以它不会发送它。所以我所做的是放置一个隐藏的输入并根据他们单击提交表单的按钮更改它的值。

另请注意,我默认选择更新的值。我这样做是为了如果用户使用键盘上的回车键来提交表单,它会自动执行某些操作并且不会出错。

HTML

<input type="hidden" name="choice" id="choice" value="update">
<input type="submit" name="update" value="Update">
<input type="submit" name="delete" value="Delete">

jQuery

$('input[type="submit"]').click(function() {
     $('#choice').val(this.name)
});

PHP

if(isset($_POST['choice']) && $_POST['choice'] == "update") {
    //if user clicked update
} else if(isset($_POST['choice']) && $_POST['choice'] == "delete") {
    //user clicked delete.
}
于 2013-04-11T23:18:06.763 回答