jQuery serializeArray失败了

时间:2015-04-07 18:18:15

标签: jquery serialization

请考虑以下事项:

PHP:

<form id="f-submit" method="post" action="">

    <button class="btn-submit" name="update" type="submit">APPROUVE</button>

</form>

jQuery的:

$("button.btn-submit").click(function(event) {
    event.preventDefault();

    var formData = $("#f-submit").serializeArray();
    formData.push({actiontype: "delete"});

    $.ajax({
        type: "POST",
        url: "includes/submit_comment.php",
        data: formData
    }).done(function(data) {

        alert(data);

    }).fail(function(data) {

        alert('Ajax failed.');

    });
});

submit_comment.php:

if (isset($_POST['actiontype'])) {

    echo 'found';

} else {

    echo 'not found';

}

出于某种原因,我总是'找不到'。

但是,当我在没有序列化的情况下发送数据时,就像这样,

var formData = ({actiontype: "delete"});

它有效!!!

所以问题必须在serializeArray()上,但它是什么?我真的疯了这个......

2 个答案:

答案 0 :(得分:1)

尝试这种语法:

formData.push({name: 'actiontype', value: delete});

答案 1 :(得分:0)

serializeArray()生成一个由名称和值组成的对象。 您是否尝试过调试var formData = $("#f-submit").serializeArray();?在你的情况下,它不应该产生名称/值对,因为:

  

仅将“成功控件”序列化为字符串。没有提交按钮值被序列化,因为表单未使用按钮提交。要使表单元素的值包含在序列化字符串中,该元素必须具有name属性。文件选择元素中的数据未序列化。 jQuery doc

因此,您必须从提交中添加不同的输入。我们来看看这个智能解决方案:jQuery serializeArray doesn't include the submit button that was clicked