Ich versuche, den Wert GetURL
in der New_Token
Funktion wieder aus der Funktion zu bekommen, so dass ich es verwenden kann. Ich denke mein Problem ist die request.onreadystatechange
Linie (obwohl ich nicht sicher sein kann). GetURL
ist außerhalb der Funktion nicht definiert.OnReadyStateChange Scoping Problem
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);
}
}
}
Was geschieht zur Zeit? –
Die Warnung für GetURL ist nicht definiert. – Learning2Prgrm
Ihr Problem ist mit dem Programmablauf. Die 'request.send (...)' startet einen Hintergrund-Thread, der ** nach ** Ihrem 'alert (...)' Code endet. Sie sollten den 'alert (GetURL)' innerhalb der Methode einfügen, die ausgeführt wird, wenn der Server Ihre 'request.send()' antwortet. –