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

jQuery: pushing values in .serializeArray();

本文关键字:推送 serializeArray jQuery      更新时间:2023-09-26

我正在jQuery中开发AJAX表单子模块。

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

所以它可能看起来是这样的:

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

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

我尝试了.serialize()函数,但仍然无法获得所需的内容。

这是一把小提琴。

$(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");
    });
});

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

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

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

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