0

我正在尝试创建一个小的登录屏幕。我没有使用任何 API。我设置登录屏幕的方式如下

  1. 用户在 VIEW 中输入登录名和密码。
  2. 用户单击登录按钮。
  3. 我通过 AJAX 验证用户详细信息。
  4. 在这个阶段,如果详细信息正确,我将用户转移到下一页。
  5. 如果详细信息不正确,我只会输入错误消息。

这是我得到的 JQuery 代码。

    $(document).ready(function () {
        var returnType;
        $("#loginButton").click(function () {
            var loginDetails = { 
                loginName: $("#username").val(),
                password: $("#password").val()
            };
            $.ajax({
                url: '@Url.Action("VerifyLoginDetails", "Home")',
                type: 'POST',
                contentType: 'application/json',
                dataType: 'json',
                data: JSON.stringify(loginDetails),
                success: function (data) {
                    if (data.success) {
                        if (data.loginAuthentication == 1) {
                            return true;
                        }

                        if (data.loginAuthentication == -2) {
                            $("#password").attr("style", "display:block;");
                            alert("incorrect password");
                            return false;
                        }

                        if (data.loginAuthentication == -1) {
                            $("#username").attr("style", "display:block;");
                            alert("incorrect un");
                            return false;
                        }

                    }
                }
            });
        });
    });

据我所知,如果我返回 true,它不应该将调用发送给控制器,但由于某种原因,它仍然会发送。关于如何通过 jQuery 停止对控制器的调用的任何建议?

4

3 回答 3

3

可能#loginButton是在单击按钮时提交的表单中。您可以使用preventDefault()来停止此行为:

$("#loginButton").click(function (e) {
  e.preventDefault();
  ...
于 2013-04-29T11:13:14.277 回答
0

请尝试此代码

  $(document).ready(function () {
        var returnType=false;
        $("#loginButton").click(function () {
            var loginDetails = { 
                loginName: $("#username").val(),
                password: $("#password").val()
            };
            $.ajax({
                url: '@Url.Action("VerifyLoginDetails", "Home")',
                type: 'POST',
                contentType: 'application/json',
                dataType: 'json',
                data: JSON.stringify(loginDetails),
                success: function (data) {
                    if (data.success) {
                        if (data.loginAuthentication == 1) {
                            returnType=true;
                        }

                        if (data.loginAuthentication == -2) {
                            $("#password").attr("style", "display:block;");
                            alert("incorrect password");
                            returnType=false;
                        }

                        if (data.loginAuthentication == -1) {
                            $("#username").attr("style", "display:block;");
                            alert("incorrect un");
                            returnType=false;
                        }

                    }
                }
            });
            return returnType;
        });
    });
于 2013-04-29T12:51:52.337 回答
0

就我所见,成功函数的返回值什么也没做。你应该做的是把你的重定向代码放在你有“return true”的地方。

为此,请使用 window.location.href。

window.location.href = " https://google.com ";

于 2013-04-29T11:34:50.517 回答