jQuery AJAX-запрос возвращает строку JSON и не перенаправляет в Windows Azure - PullRequest
0 голосов
/ 03 апреля 2012

Я работаю на веб-сайте ASP.NET MVC 3, и все отлично работает на локальной версии, но когда я загружаю его в облаке, процесс входа в систему не работает, как ожидалось. Вот мое действие при входе в систему:

[AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Login(string username, string password)
    {
        password = Project_0._1._1.Cloud_Platform.Methods.Encrypt(password);

        REST_Auth.REST_AuthResponse loginResponse = REST_Auth.GetAuthToken(username, password, Project.Instance.AdModule.DeviceID);

        if (loginResponse.ErrorID != "AUTH00002")
        {
            HttpCookie _username = new HttpCookie("username");
            HttpCookie _password = new HttpCookie("password");
            HttpCookie _token = new HttpCookie("token");
            HttpCookie _userID = new HttpCookie("userID");
            _username.Value = username;
            _password.Value = password;
            _token.Value = loginResponse.Token;
            _userID.Value = loginResponse.UserID;

            this.ControllerContext.HttpContext.Response.Cookies.Add(_username);
            this.ControllerContext.HttpContext.Response.Cookies.Add(_password);
            this.ControllerContext.HttpContext.Response.Cookies.Add(_token);
            this.ControllerContext.HttpContext.Response.Cookies.Add(_userID);
        }

        return Json(loginResponse);
    }

А вот вызов jQuery:

$.ajax({
        type: "POST",
        url: "login",
        data: $("#login_form").serialize(),
        dataType: 'json',
        beforeSend: function () {
            $("#login_fields").fadeOut(300);
            if ($("#lresponse"))
                $("#lresponse").remove();
        },
        success: function (data, textStatus, jqXHR) {
            if (data.ErrorID == "AUTH00002") {
                $("#login_fields").fadeIn(500);
                $("#login_fields").append("<span id='lresponse'>Invalid login details. Try again</span>");
            }
            else {
                $("#login_fields").fadeIn(500);

                window.location = "/";
            }
        },
        error: function (error) {
            alert(error);
        }
    });

На локальном хосте все работает как положено: в случае успеха перенаправляется на домашнюю страницу. Тем не менее, в облачной версии, в реальном времени, она просто отображает результат JSON, а не отображает HTML-страницу. Я перепробовал все возможное. Кто-нибудь еще имел дело с этой проблемой?

1 Ответ

0 голосов
/ 13 апреля 2012

Вам нужно разместить больше кода.

Я считаю, что вы просто не отменяете отправку формы. Я вижу, что в вашем коде есть 'data: $ ("# login_form"). Serialize () ", что, в сочетании с вашим описанием, заставляет поверить, что это проблема.

Я не думаю, что вы когда-либо даже называли свой AJAX.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...