无法获取/设置应在范围内的变量

时间:2017-06-18 19:04:15

标签: javascript jquery asp.net-mvc-5

我试图弄清楚为什么access_token(函数)变量不能从内部范围访问(即嵌套在全局函数内部)。

以下是代码:

$(function () {

            var accessToken = "";

            var getHeaders = function () {
                alert(accessToken);
                if (accessToken) {
                    return {
                        "Authorization" : "Bearer " + accessToken
                    };
                }
            }

            var showResponse = function (obj) {

                $("#output").text(JSON.stringify(obj, null, 4));

            };

            var register = function () {
                var url = "/api/account/register";
                var contentBody = $("#registerData").serialize();

                $.post(url, contentBody).always(showResponse);
                return false;
            }

            var saveAccessToken = function (response) {
                accesToken = response.access_token;
            };

            var login = function () {
                var url = "/token";
                var contentBody = $("#loginData").serialize();
                contentBody = contentBody + "&grant_type=password";
                $.post(url, contentBody)
                    .success(saveAccessToken)
                    .always(showResponse);

                return false;
            };

            var getPatients = function () {
                var url = "http://localhost:62012/api/patients/";
                $.ajax(url, {
                    type: "GET",
                    beforeSend: function (xhr, settings) { xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken); }
                }).always(showResponse);

                return false;

            };

            $("#getPatients").click(getPatients);
            $("#register").click(register);
            $("#login").click(login);
        });

我尝试在整个代码中使用提醒,但只要accessToken只是""警报未被解除内部 saveAcessToken ...

应用程序的一般流程:

  1. 用户登录,设置accessToken
  2. 当用户点击ajax按钮时,会发送getPatients GET 请求。
  3. 任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

看起来您正在saveAccessToken中设置名为accesToken的变量。尝试将其重命名为accessToken