繁体   English   中英

PHP无法从jQuery AJAX表单提交中获取发布数据

[英]PHP Not Picking Up Post Data from jQuery AJAX Form Submit

我有一个带有提交按钮的表单,如下所示:

<form action="?edit-form" method="post" class="addEdit">
    <input type="submit" name="delete-image" value="Delete Image">
</form>

我的jQuery AJAX是:

$.ajax({
    url: $('form.addEdit').attr('action'),
    type: $('form.addEdit').attr('method'),
    data: $('form.addEdit').serialize(),
    success: function(html) { }
});

在我的PHP中,即使发送表单的提交按钮名为“ delete-image”,我也无法选择$ _POST ['delete-image'] isset()。

if (isset($_POST['delete-image'])) {
}

应该设置“删除图像”,因为那是我单击的提交按钮。 为什么PHP不从此AJAX提交中提取此已发布的变量?

在此处的jQuery文档中: http ://api.jquery.com/serialize/
只有成功的控件才被序列化,请参阅以下文档:

注意:只有“成功控件”才被序列化到字符串。 由于没有使用按钮提交表单,因此没有序列化提交按钮的值。 为了使表单元素的值包含在序列化的字符串中,该元素必须具有name属性。 仅当选中复选框和单选按钮(“ radio”或“ checkbox”类型的输入)中的值时,才包括这些值。 来自文件选择元素的数据未序列化。

因此,提交按钮不会通过jQuery.serialize()函数进行序列化。 解决方法是您可以添加隐藏的输入,并将其序列化。

更新:
您需要更改表单提交Ajax来绑定按钮单击。 在ajax请求中,您可以手动添加按钮值。 下面是我的代码正在工作。

$( "#delImage" ).click(function( event ) {
    event.preventDefault();
    $form = $(this).parent('form');
    $btnid = $(this).attr('name');
    $btnval = $(this).attr('value');


    $.ajax({
        url: $form.attr('action'),
        type: $form.attr('method'),
        data: { "btnid" : $btnid, "btnval": $btnval, "form-data": $form.serialize() },
        success: function(html) {
            console.log(html);
        }
    });
});

如果您不希望在单击按钮时重新加载页面,则只需使用发送ajax调用的简单方法即可:

var mydata = $('form.addEdit').serialize();
$.ajax({
type:'POST',
url: 'file.php',
data: mydata,
dataType:'json',
success: function(responseText){
// enter code here
 });
}
});

只是让您的表单没有这些元素

<form class="addEdit">
<input type="submit" name="delete-image" value="Delete Image">
</form>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM