Jquery ajax提交总是返回false
我有表单供用户提交,我在布局页面中呈现为局部视图。 我使用这个脚本来提交局部视图,根据我放在上面的breackpoint,它总是返回false,数据确实提交到数据库,表单没有清除其中的数据。我在submit按钮上也有一个小脚本,但是breackpoint从来没有出现过。 以下是我正在使用的脚本:Jquery ajax提交总是返回false,jquery,ajax,asp.net-mvc,forms,Jquery,Ajax,Asp.net Mvc,Forms,我有表单供用户提交,我在布局页面中呈现为局部视图。 我使用这个脚本来提交局部视图,根据我放在上面的breackpoint,它总是返回false,数据确实提交到数据库,表单没有清除其中的数据。我在submit按钮上也有一个小脚本,但是breackpoint从来没有出现过。 以下是我正在使用的脚本: $('#contact').submit(function () { $.ajax({ url: this.action, type: this.method,
$('#contact').submit(function () {
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
success: function (result) {
$('#contact').html(result);
}
});
return false;
});
$("#Send").bind('click', function (event) {
$("#contact").submit();
});
您是否尝试过使用
preventDefault
$('#contact').submit(function (e) {
e.preventDefault();
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
success: function (result) {
$('#contact').html(result);
}
});
});
编辑
您有
#contact
的提交处理程序,它当然是一个表单。成功函数将把从控制器返回的部分视图放在<代码>#联系方式?这真的是你想要的吗?如果要将表单替换为空白表单,则当您试图将html发布到作为表单的#contact
中时,局部视图应仅包含表单字段。也许您想针对其他div?您告诉它返回false。Ajax是异步运行的,因此代码只需启动Ajax,然后进入下一步-返回false。它没有时间点击成功
(返回false之前)
相反,我会这样做:
$('#contact').submit(function (e) {
e.preventDefault(); //prevents the submit
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
datatype : 'html',
success: function (result) {
$('#contact').html(result);
}
});
});
您还可以通过添加选项async:false
,选择同步运行Ajax,但不建议这样做
正如A.Wolff在评论中提到的,返回false
和e.preventDefault
基本上做了相同的事情
但是,如果Ajax没有成功,则永远不会触发该处理程序。也许为错误添加一个处理程序将澄清错误的真正来源:
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
datatype : 'html',
success: function (result) {
$('#contact').html(result);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("Status: " + textStatus + " Error: " + errorThrown);
}
});
那么,你期望的行为是什么?申请完成后提交的表格?或者只是重新设置所有输入的表单?它没有时间成功
不,它不是那样工作的。如果表单已提交,但OP正在使用返回false,则会出现这种情况代码>防止it@A.Wolff我的意思是,在返回成功之前,事件将返回false。我现在明白了,我可能太快了,因为我不确定他/她想在之后发生什么。谢谢,我已经尝试过了,但是数据没有从页面中清除(相同的结果)。我正在尝试在>返回PartialView(“U bla”)后加载此PartialView;好的,我明白你的意思,但是jQuery事件总是返回先前匹配的元素集。这里返回false
是事件.preventDefault()的缩写;event.stopPropagation()
@Danny如果要清除表单中的数据,请在成功回调中调用:$(“#contact”).get(0.reset()代码>编辑:我在您的成功回调中看到您正在使用$('#contact').html(结果)代码>所以我仍然不确定你的问题是什么。至少成功回调是否被触发了???确实如此。恰巧我在他之前几秒钟就发布了我的帖子,他肯定是在我发布我的帖子时键入了他的答案,所以他肯定错过了我的帖子是的,chiapa确实比我快了几秒钟:)我担心这不是正确的解决方案,尽管我想将其定位为将在原始页面中呈现的不同部分视图。到目前为止,脚本似乎运行良好。我的问题是局部视图。我将就此提出一个新问题。