我试图弄清楚为什么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
只是""
警报未被解除内部} strong> saveAcessToken
...
应用程序的一般流程:
accessToken
。ajax
按钮时,会发送getPatients
GET 请求。 任何帮助将不胜感激!
答案 0 :(得分:2)
看起来您正在saveAccessToken中设置名为accesToken的变量。尝试将其重命名为accessToken