我有以下jQuery Ajax代码:
$("#new_form").submit(function (event) {
event.preventDefault();
$.post("/home/new_ajax", $(this).serialize(), function (data) {
if (data.errors == '') {
$("#new_form").submit();
} else {
alert(data.errors);
}
}, "json");
});
然而,由于
event.preventDefault();
此行不起作用:
$("#new_form").submit();
有没有办法解决这个问题?
答案 0 :(得分:3)
您可以使用.trigger()
代替.submit()
- 它允许您传入事件处理程序可以使用的额外参数:
$("#new_form").submit(function (event, skipCustomStuff) {
// If second parameter is truthy, let the submission happen
if (skipCustomStuff) return;
event.preventDefault();
$.post("/home/new_ajax", $(this).serialize(), function (data) {
if (data.errors == '') {
// trigger submission passing in true as second parameter
$("#new_form").trigger('submit', [true]);
} else {
alert(data.errors);
}
}, "json");
});
答案 1 :(得分:1)
最简单的方法是执行$("#new_form")[0].submit()
,它将绕过任何jQuery绑定处理程序并提交表单。
$("#new_form").submit(function (event) {
event.preventDefault();
$.post("/home/new_ajax", $(this).serialize(), function (data) {
if (data.errors == '') {
$("#new_form")[0].submit();
} else {
alert(data.errors);
}
}, "json");
});