所以我目前正在使用一個API的程序工作。JavaScript - 不能從onload函數獲取數據(http請求)
我有兩個功能ATM:
getBotID()
function getBotID(domain) {
var url = "http://" + domain + ":8087/api/v1/botId";
idRequest.open("GET", url);
idRequest.onload = function() {
var botID = JSON.parse(idRequest.responseText);
};
idRequest.send();
}
和getAuth()
function getAuth(domain, user, pass) {
getBotID(domain);
var url = "http://" + domain + ":8087/api/v1/bot/login";
body = '{"username": ' + user + ', "password": ' + pass + ', "botId": ' + botID + '}';
authRequest.open("POST", url);
authRequest.setRequestHeader("Content-Type", "application/json");
authRequest.onload = function() {
var authToken = JSON.parse(authRequest.responseText);
};
authRequest.send(JSON.stringify(body));
}
我必須得到BOTID之前,我可以嘗試得到一個新的authToken所以我立即在getAuth()函數中調用getBotID()。
我的問題是:我不能得到BOTID在getBotID(http請求的onload()函數之外),因爲它會像這樣運行:
- 開始getAuth()
- 啓動getBotID()
- 完成getBotID()
- 完成getAuth()
- ,現在可以getBotID()的onload功能...
我只是不能從onload函數獲取botID數據。我已經試圖給你一個回調函數,但沒有奏效。
你不能那樣做。你應該使用承諾。 – SLaks
不要手動構建JSON。使用'JSON.stringify'。 – SLaks
@SLaks你的意思是身體變量? – redii