我必须丢失一些明显的东西...如何防止“返回false”;在与ASP.NET MVC冲突的AjaxSubmit RedirectToAction
我有一个标准的ASP.NET MVC3登录操作,正常工作。如果用户/密码匹配,则FormsAuthentication执行其SetCookie例程并按预期执行RedirecToAction,否则返回设置模型状态错误并将模型返回到视图。所以这适用于Javascript禁用。
我现在试图添加jQuery.Form插件来做一个ajaxSubmit,如果用户不使用匹配的用户/密码组合显示错误。
$(document).ready(function() {
var options = {
success: showResponse
};
$('#formLogon').submit(function() {
$(this).ajaxSubmit(options);
// return false;
});
function showResponse() {
$("#loginError").show();
}
});
我的问题是,如果我取消注释“返回false”;在调用showResponse函数后,ajaxSubmit错误div正确显示。但是,如果提交了正确的用户名/密码,用户将不会被重定向,因为重定向被拦截(但我已经看到了Fiddler中的GET调用,所以我知道重定向正在发出请求)。
我试着移动“返回false”;到showResponse函数,但它不起作用,没有返回false之后,ajaxSubmit MVC重定向踢在回调之前,并且从不显示错误div。
这是不是我正在尝试做的正确实施?
对不起,我不是很遵循你的事件序列。如果我已经提交了一次并检查了密码,为什么还要再次提交表单?而且我不太清楚你的意思是“把回报放回去”。 – user1194094 2012-02-08 03:32:50
那么你试图做到这一点(真的)只有当登录是正确的提交表单。当您尝试登录时,您将提交函数返回false。这使得表单只会对服务器执行ajax调用,并且不会因为返回false而提交。如果你使用$ .ajax,你可以定义一个回调函数。在这个回调函数中,你可以检查登录是否正确。如果不是,您可以显示错误,如果它是正确的,您可以从登录表单的提交功能中删除返回false。然后你让表单提交。 – 2012-02-08 08:32:58