Json查询结果未设置

时间:2013-12-29 03:59:33

标签: json asp.net-mvc-4 twitter-bootstrap

我正在尝试使用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。

0 个答案:

没有答案