Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法获取/设置应在范围内的变量_Javascript_Jquery_Asp.net Mvc 5 - Fatal编程技术网

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

Javascript 无法获取/设置应在范围内的变量,javascript,jquery,asp.net-mvc-5,Javascript,Jquery,Asp.net Mvc 5,我试图弄明白为什么不能从内部作用域(即嵌套在全局函数内部)访问access\u token(函数)变量 代码如下: $(function () { var accessToken = ""; var getHeaders = function () { alert(accessToken); if (accessToken) { return

我试图弄明白为什么不能从内部作用域(即嵌套在全局函数内部)访问
access\u 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);
        });
我尝试在整个代码中使用警报,但似乎只要警报未在内部
saveAcessToken
中触发,
accessToken
就是

应用程序的一般流程:

  • 用户登录,设置
    accessToken
  • 当用户单击
    getPatients
    按钮时,会发送一个
    ajax
    GET请求
    任何帮助都将不胜感激

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

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

    您很可能试图在AJAX调用完成之前访问该变量。请参阅“常规流”中的编辑。当我发送请求时,不可能不设置变量,因为变量应该在
    登录之后设置/我看不出这与C#有什么关系。您很可能试图在AJAX调用完成之前访问变量。请参阅“常规流”中的编辑。当我发送请求时,不可能不设置变量,因为变量应该在
    登录之后设置/我不明白这和C有什么关系。