使用Ajax在MVC中提交表单。无法防止默认表单提交
我想提交一个表单使用Ajax在ASP.NET中,一切工作正常,但我不能阻止使用e.preventdefault()方法的默认表单提交。使用Ajax在MVC中提交表单。无法防止默认表单提交
这是我的jQuery AJAX提交代码:
$('#submitBtn').on('click', function() {
$('#addNewContact').submit(function (e) {
e.preventDefault();
$.ajax({
type: "POST",
url: $(this).attr('action'),
data: $(this).serialize(),
dataType: 'json',
success: function (message) {
console.log(message);
},
error: function (message) {
console.log(message);
}
})
})
})
如果你有一个表格ID addNewContact
和一个提交按钮,然后你可以用这样的方式来注册它
$('#addNewContact').submit(function (e) {
e.preventDefault();
$.ajax({
// ...
});
});
在你代码,你已经使用了$(this).attr('action')
这意味着你正在尝试使用表单提交事件,但是你在代码中做错了。你所做的是:
$('#submitBtn').on('click', function() { // Click handler registered
$('#addNewContact').submit(function (e) { // Submit handler registered
e.preventDefault();
$.ajax({
// ...
});
});
});
所以,你的代码应为如下(为表单提交事件):
$('#addNewContact').submit(function (e) {
e.preventDefault();
$.ajax({
type: "POST",
url: $(this).attr('action'),
data: $(this).serialize(),
dataType: 'json',
success: function (message) {
console.log(message);
},
error: function (message) {
console.log(message);
}
});
});
是的,这就是我说的,只有当他点击按钮时,提交处理程序才会被注册,但这不是预期的行为 –
如果e.preventDefault()
不工作,你可以写 - 在最后陈述 - return false;
该功能执行您所需的功能,并将防止默认表单提交。
如果您对我提供的答案满意,请选择它作为正确答案你的问题 –
将'submitBtn'的类型更改为普通按钮或将代码修改为'$('#submitBtn')。on('click',function(e){'and'e.preventDefault();'点击功能 – vijayP