jQuery:在.serializeArray()中推送值;

时间:2014-10-28 21:41:42

标签: javascript jquery ajax

我正在使用jQuery中的AJAX表单子目录。

我使用.serializeArray()函数来序列化表单,但是我需要在获取的对象中添加一个元素,所以我使用了push()函数。

所以它可能看起来像那样:

{
    name: "Test",
    surname: "Test",
    action: "register"
}

当我序列化表单时,将发送名称和姓氏字段,但不会发送操作字段。 我将信息发送到PHP echo函数,但是,与console.log()结果一样,它将显示名称和姓氏,但不会显示操作。

我尝试了.serialize()功能,但我仍然无法获得所需的功能。

这是fiddle

$(document).ready(function () {
    $("#register").on("submit", function (e) {
        e.preventDefault();

        var data = $("#register").serializeArray();
        data.push({name: "action", value: "register"});

        console.log(data);

        jQuery.post("/echo/json/", data,
            function () {
                alert("Success");
            },
        "json");
    });
});

2 个答案:

答案 0 :(得分:0)

问题是您绑定了一个事件处理程序,但是您没有阻止该表单像默认行为一样提交。你可以通过在事件处理程序的末尾添加return false;来解决这个问题,但有更好的方法(搜索google for jQuery阻止表单提交)。您还需要绑定$('#register').submit而不是$("#registerSubmit").click(这使得Enter按钮也能正常工作)

答案 1 :(得分:0)

问题是您要发送两个请求,因此请禁用表单提交:

$( '#register' ).on( 'submit', function() {
    return false;
});

或者您可以将提交按钮放在表单之外。