Javascript jQuery:将值推入.serializeArray();

Javascript jQuery:将值推入.serializeArray();,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在jQuery中处理AJAX表单提交 我使用了.serializeArray()函数来序列化表单,但是我需要向获取的对象添加一个元素,所以我使用了push()函数 所以看起来可能是这样的: { name: "Test", surname: "Test", action: "register" } 当我序列化表单时,名称和姓氏字段将被发送,但操作字段不会。 我将信息发送到PHP echo函数,但与console.log()result一样,它将显示名称和姓氏,但不会显

我正在jQuery中处理AJAX表单提交

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

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

{
    name: "Test",
    surname: "Test",
    action: "register"
}
当我序列化表单时,名称和姓氏字段将被发送,但操作字段不会。 我将信息发送到PHP echo函数,但与
console.log()
result一样,它将显示名称和姓氏,但不会显示操作

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

这是一本书


问题是您正在绑定一个事件处理程序,但并没有像默认行为那样阻止表单提交。您可以通过添加
return false来修复此问题位于事件处理程序的末尾,但有更好的方法(在google中搜索jQuery阻止表单提交)。您还需要绑定
$(“#register”)。提交
而不是
$(“#registerSubmit”)。单击
(这会使enter按钮也起作用)

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

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

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

请提供您尝试发送邮件的代码object@Izzey,fiddle已更新。您所拥有的应该可以正常工作。@FelixKling我使用了
.serialize()
函数,但结果仍然相同。我知道我可以通过隐藏元素“手动”完成,但我看到其他人也有同样的问题,但通过
.push()
函数,他们解决了问题。基于小提琴,
数据不太可能是问题所在。相反,
仍在正常提交。这将导致页面导航,并将中断
jQuery.post()
request.OP仍需要向服务器发送键/值对
serializeArray()
创建objectsYeah数组,但他在小提琴中使用的push方法工作得很好(请查看console.log),可以理解,但它仍然是一个数组,没有为
$\u POST
发布
$\u POST
来接受数据。当您将数组作为数据传递时,jQuery会将其转换为正确的表单数据。在控制台中自己尝试一下:
jQuery.post(“index.php”,[{name:'a',value:'b'}],console.log,“json”)
my bad..从未尝试过,也没有意识到数组将被正确解析
$( '#register' ).on( 'submit', function() {
    return false;
});