我正在使用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");
});
});
答案 0 :(得分:0)
问题是您绑定了一个事件处理程序,但是您没有阻止该表单像默认行为一样提交。你可以通过在事件处理程序的末尾添加return false;
来解决这个问题,但有更好的方法(搜索google for jQuery阻止表单提交)。您还需要绑定$('#register').submit
而不是$("#registerSubmit").click
(这使得Enter按钮也能正常工作)
答案 1 :(得分:0)
问题是您要发送两个请求,因此请禁用表单提交:
$( '#register' ).on( 'submit', function() {
return false;
});
或者您可以将提交按钮放在表单之外。