0
我想弄清楚爲什麼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
。 ..
應用程序的一般流程:
- 用戶登錄,設置
accessToken
。 - 安
ajax
GET當用戶點擊getPatients
按鈕時發送請求。
任何幫助將不勝感激!
您很可能在AJAX調用完成之前嘗試訪問該變量。 –
請參閱「一般流程」中的編輯。當我發送請求時,變量不應該被設置,因爲變量**應該在'login'之後被設置。 :/ – geostocker
我沒有看到這與C#有什麼關係。 – mason