在这里,我正在调用控制器方法GetAccessTokenAsync,它返回一个包含来自auth0的访问令牌的JSON结果
function GetAccessToken() {
$.ajax({
type: "GET",
url: "https://localhost:44301/Account/GetAccessTokenAsync",
contentType: 'json',
dataType: 'json',
success: function (data) {
JSON.stringify(data)
}
});}
这是控制器方法代码
public async Task<JsonResult> GetAccessTokenAsync()
{
var accessToken = await HttpContext.GetTokenAsync("access_token");
return Json(accessToken);
}
在这里,我尝试从上面的ajax调用中将值获取到请求标头中,但它始终返回未定义状态。但是,该呼叫确实包含正确的访问令牌,只是设置不正确
function GetAll() {
var accessToken = GetAccessToken();
$.ajax({
type: "GET",
contentType: 'json',
dataType: 'json',
crossDomain: false,
url: "https://localhost:44348/api/v1/trialuser/1",
beforeSend: function (request) {
request.setRequestHeader("Authorization", "Bearer " + accessToken);
request.setRequestHeader("Access-Control-Allow-Origin", "https://localhost:44301");
},
success: function (data) {
$.each(data, function (key, item) {
$('<tr>', { html: formatItem(item) }).appendTo($("#getAllTable"));
$('#show').attr("disabled", true)
})
},
});}
还有其他人遇到这个问题吗?而且我对jquery和ajax调用的了解并不广泛,因此请感谢任何示例
答案 0 :(得分:1)
您是函数GetAccessToken()不会返回任何内容或设置任何全局变量。 因此,从设置accessToken = GetAccessToken()的函数GetAll()对该函数的调用没有任何设置。
要么在成功事件中返回某些内容,要么设置一个变量值,两个函数都可以访问范围。
答案 1 :(得分:0)
更改您的GetAccessToken
方法以返回响应。
function GetAccessToken() {
$.ajax({
type: "GET",
url: "https://localhost:44301/Account/GetAccessTokenAsync",
contentType: 'json',
dataType: 'json',
success: function (data) {
return JSON.stringify(data)
}
});}