Jquery ajax提交总是返回false

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,

我有表单供用户提交,我在布局页面中呈现为局部视图。 我使用这个脚本来提交局部视图,根据我放在上面的breackpoint,它总是返回false,数据确实提交到数据库,表单没有清除其中的数据。我在submit按钮上也有一个小脚本,但是breackpoint从来没有出现过。 以下是我正在使用的脚本:

 $('#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确实比我快了几秒钟:)我担心这不是正确的解决方案,尽管我想将其定位为将在原始页面中呈现的不同部分视图。到目前为止,脚本似乎运行良好。我的问题是局部视图。我将就此提出一个新问题。