我正在尝试使用Json请求从登录屏幕获取数据。但无论登录请求是否有效,我总是会回到我的主屏幕。我想我的结果不正确?
基本上,在我的Twitter-Bootstrap启用的网站中,我有一个模式弹出窗口,将用户带到登录表单。
值通过json查询传递给我的MVC4控制器。断点显示我获得了良好的数据。
这是发送数据的脚本:
<script type="text/javascript">
$(document).ready(function () {
$('.btnSubmit').on('click', function () {
var data = { username: $('.txtUsername').val(), password: $('.txtPassword').val(), rememberMe: $('.cbRemember').val() };
$.ajax({
url: '@Url.Action("LoginUser", "User")',
type: "POST",
contentType: "application/json",
data: JSON.stringify(data),
cache: false,
async: true,
success: function (result) {
if (result['success'] == 'true') {
alert("true");
window.location = '@Url.Action("Index", "Home")';
} else {
alert("BAD");
}
},
error: function () {
alert("Error in input");
}
});
});
});
</script>
这是控制器方法:
[HttpPost]
public JsonResult LoginUser(string username, string password, string rememberMe)
{
string success = "false";
string message = "Not set";
if (username == string.Empty || password == string.Empty)
{
success = "false";
message = "Invalid Username/Password";
}
else
{
if (ModelState.IsValid)
{
var us = new UserService();
var reply = us.Authenticate(username, Security.EncryptText(password));
if (reply == 0)
{
success = "false";
message = "Invalid Username/Password";
}
if (reply != 0)
{
var p = us.GetPerson(reply);
FormsAuthentication.SetAuthCookie(p.Id.ToString(CultureInfo.InvariantCulture), rememberMe == "on");
Session["UserDisplay"] = string.Format("{0} {1} - ({2})", p.Firstname, p.Surname, p.Email);
success = "true";
message = "Login Success";
}
}
}
var result = new { Success = success, Message = message };
var r = new JsonResult
{
Data = result
};
return r;
}
然而,我总是得到'不好'的警告。绝不是'真实'。
我可以按照我的方式检查结果吗?我试图以正确的方式做到这一点吗?基本上,如果我得到'坏',我不希望屏幕刷新。事实上,我想要显示一条消息,说明'message'参数中的内容。
编辑:我认为'结果'是NULL。