Javascript 我该如何预防;返回false&引用;在ajaxSubmit中,来自与ASP.NET MVC RedirectToAction冲突

Javascript 我该如何预防;返回false&引用;在ajaxSubmit中,来自与ASP.NET MVC RedirectToAction冲突,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,我一定错过了什么明显的 我有一个标准的ASP.NET MVC3登录操作,可以正常工作。如果用户/密码匹配,则FormsAuthentication执行其SetCookie例程并按预期执行重定向操作,否则返回设置模型状态错误并将模型返回到视图。因此,这适用于禁用Javascript的情况 我现在尝试添加jQuery.Form插件来执行ajaxSubmit,如果用户没有使用匹配的用户/密码组合,则显示错误 $(document).ready(function () { var opt

我一定错过了什么明显的

我有一个标准的ASP.NET MVC3登录操作,可以正常工作。如果用户/密码匹配,则FormsAuthentication执行其SetCookie例程并按预期执行重定向操作,否则返回设置模型状态错误并将模型返回到视图。因此,这适用于禁用Javascript的情况

我现在尝试添加jQuery.Form插件来执行ajaxSubmit,如果用户没有使用匹配的用户/密码组合,则显示错误

$(document).ready(function () {
        var options = {
            success: showResponse
        };

        $('#formLogon').submit(function () {
            $(this).ajaxSubmit(options);
            // return false;
        });

        function showResponse() {
            $("#loginError").show();                             
        }
    });
我的问题是,如果在ajaxSubmit之后取消注释“return false;”,则调用showResponse函数时错误div将正确显示。但是,如果提交了正确的用户名/密码,用户将永远不会被重定向,因为重定向被截获(但我在Fiddler中看到了GET调用,因此我知道重定向正在发出请求)

我尝试将“return false;”移到showResponse函数中,但它不起作用,在ajaxSubmit之后没有返回false,MVC重定向在回调之前启动,错误div从未显示


这不是我要做的正确实现吗?

您应该尝试查看jQuery的$.ajax函数。使用此函数可以定义回调

应该发生的事情如下 提交时总是返回false 当用户输入登录名时,发出ajax请求。 如果用户输入了正确的登录名,请删除提交功能并使用
$(this.submit
)进行提交。(使用$.ajax的回调) 然后把返回值放回去


这是一个肮脏的修复程序,但我认为它会起作用

对不起,我没有完全按照您的顺序进行操作。如果我已经提交了一次并检查了密码,为什么还要再次提交表单?我不太清楚你所说的“返回错误”是什么意思。那么,你想做的是(真正地)只有在登录正确时才提交表单。当您尝试登录时,在提交函数中返回false。这使得表单只对服务器执行ajax调用,并且由于返回值为false而不会提交。如果使用$.ajax,则可以定义回调函数。在这个回调函数中,您可以检查登录是否正确。如果不是,您可以显示错误,如果正确,您可以从登录表单的提交功能中删除return false。然后让表单提交。