Javascript 如何在Asp.NETMVC上实现客户端Ajax登录(此处是指向Asp.NETWebForms解决方案的链接)
我正在尝试在Asp.NETMVC上实现客户端ajax登录。我以前在WebForms上设置的很好,但现在我转到MVC,这给我带来了一些麻烦 如果您想要一个关于Asp.NETWebForms客户端Ajax登录的教程,可以找到它——很简单,一个++ 现在。。。由于某些原因,它不适用于Asp.NETMVC 除了执行Javascript 如何在Asp.NETMVC上实现客户端Ajax登录(此处是指向Asp.NETWebForms解决方案的链接),javascript,asp.net-mvc,ajax,authentication,webforms,Javascript,Asp.net Mvc,Ajax,Authentication,Webforms,我正在尝试在Asp.NETMVC上实现客户端ajax登录。我以前在WebForms上设置的很好,但现在我转到MVC,这给我带来了一些麻烦 如果您想要一个关于Asp.NETWebForms客户端Ajax登录的教程,可以找到它——很简单,一个++ 现在。。。由于某些原因,它不适用于Asp.NETMVC 除了执行ssa.login() (相当于:Sys.Services.AuthenticationService.login())它什么也没做 我在onLoginComplete()函数和onError
ssa.login()
(相当于:Sys.Services.AuthenticationService.login()
)它什么也没做
我在onLoginComplete()函数和onError()函数中都有警报。还有,在调用ssa.login之前和之后,我有一个警报
function loginHandler() {
var username = $("#login_UserName").val();
var password = $("#login_Password").val();
var isPersistent = $("#login_RememberMe").attr("checked");
var customInfo = null;
var redirectUrl = null;
// Log them in.
alert("try login");
ssa.login(username,
password,
isPersistent,
customInfo,
redirectUrl,
onLoginComplete,
onError);
alert("made it here");
}
第一个警报触发,但第二个警报未触发,这意味着功能失败。下面是我从Asp.Net Ajax中提取的函数,向您展示:
function(c, b, a, h, f, d, e, g) {
this._invoke(this._get_path(), "Login", false, { userName: c, password: b, createPersistentCookie: a }, Function.createDelegate(this, this._onLoginComplete), Function.createDelegate(this, this._onLoginFailed), [c, b, a, h, f, d, e, g]);
}
有人知道它为什么会失败吗?你让它变得比需要的更复杂了。您所需要做的就是使用AJAX调用调用您的帐户/登录方法。您不需要复杂的身份验证服务,尽管您可能希望检测是否通过AJAX登录并返回JSON而不是视图
function loginHandler() {
var username = $("#login_UserName").val();
var password = $("#login_Password").val();
var isPersistent = $("#login_RememberMe").attr("checked");
var customInfo = null;
var redirectUrl = null;
// Log them in.
alert("try login");
$.ajax( {
url : '<%= Url.Action( "Login", "Account" ) %>',
type: 'post',
dataType: 'json',
data: { username: username,
password: password,
isPersistent: isPersistent,
},
success: onLoginComplete,
error: onError
});
alert("made it here"); // this will execute before the callback completes...
}
函数loginHandler(){
var username=$(“#登录_用户名”).val();
var password=$(“#登录_密码”).val();
var isPersistent=$(“#login_RememberMe”).attr(“选中”);
var customInfo=null;
var redirectUrl=null;
//让他们登录。
警报(“尝试登录”);
$.ajax({
url:“”,
键入:“post”,
数据类型:“json”,
数据:{用户名:用户名,
密码:密码,
ispersist:ispersist,
},
成功:只有完成,
错误:onError
});
警报(“在此处生成”);//这将在回调完成之前执行。。。
}
哇,我从来没想过这个哈哈。好主意,谢谢!如何确定是否通过AJAX登录?MVC提供了对HttpRequestBase的扩展HttpContext.Request.IsAjaxRequest。它检查是否有一个X-HTTP-Requested-header设置为XMLHTTPRequest的文件。