Я пытаюсь получить значение GetURL
в функции New_Token
обратно из функции, чтобы я мог ее использовать. Я думаю, что моя проблема - это линия request.onreadystatechange
(хотя я не могу быть уверен). GetURL
не определено вне функции.OnReadyStateChange Scoping Issue
var GetURL;
var request = new XMLHttpRequest();
var path="https://ops.epo.org/3.1/auth/accesstoken";
request.onreadystatechange= function() {New_Token(GetURL);};
var encodedData = window.btoa("key:secret"); //encode consumer key and secret key
request.open("POST", path, true);
request.setRequestHeader("Authorization", encodedData);
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.send('grant_type=client_credentials'); //send request to server, must include grant_type in payload or it won't work
alert(GetURL);
function New_Token(GetURL) {
if (request.readyState == "4") //Request finished and response is ready
{
if (request.status == "200") {
console.log(request.responseText);
var TheResponse = JSON.parse(request.responseText);
console.log(TheResponse);
var TokenValue = TheResponse.access_token;
console.log(TokenValue);
GetURL = ("?access_token=" + TokenValue);
console.log(GetURL); //this is the added string that needs to be concact. on to ALL OPS calls
return(GetURL);
}
else {
alert("Problem retrieving data");
console.log(request.responseText);
}
}
}
Что сейчас происходит? –
Предупреждение для GetURL не определено. – Learning2Prgrm
Ваша проблема связана с потоком программы. 'request.send (...)' запускает фоновый поток, который завершает ** после ** вашего кода 'alert (...)'. Вы должны поместить 'alert (GetURL)' внутри метода, который выполняется, когда сервер отвечает на ваш 'request.send()' –