3 回答

TA貢獻1810條經(jīng)驗 獲得超4個贊
你不能打電話savedNumberOfLessonInDay(number)來獲取號碼。您正在嘗試使用 執(zhí)行此操作return this.responseText;,但在對服務器的請求完成之前不會觸發(fā)。
你可以使用 Promises 來解決這個問題。
function savedNumberOfLessonInDay(dayID){
return new Promise((resolve) => {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById('demo4').innerHTML = this.responseText; //Returns the right number
resolve(this.responseText);
}
};
var PageToSendTo = "AJAX/countLessonInDay.php?";
var MyVariable = dayID;
var VariablePlaceholder = "GETDayID=";
var UrlToSend = PageToSendTo + VariablePlaceholder + MyVariable;
xhttp.open("GET", UrlToSend, false);
xhttp.send();
});
}
并用await它來稱呼它:
document.getElementById('demo').innerHTML = 'test' + await savedNumberOfLessonInDay(number);
或者,如果由于某種原因您不能使用await:
savedNumberOfLessonInDay(number).then((response) => {
document.getElementById('demo').innerHTML = 'test' + response;
});

TA貢獻1789條經(jīng)驗 獲得超8個贊
函數(shù) savedNumberOfLessonInDay() 不會等待 ajax 完成。所以需要在回調函數(shù)xhttp.onreadystatechange中設置demo的html。
在不改變你的實現(xiàn)太多的情況下,你可以簡單地修改你的代碼:
function savedNumberOfLessonInDay(dayID){
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById('demo4').innerHTML = this.responseText; //Returns the right number
document.getElementById('demo').innerHTML = 'test' + this.responseText;
}
};
var PageToSendTo = "AJAX/countLessonInDay.php?";
var MyVariable = dayID;
var VariablePlaceholder = "GETDayID=";
var UrlToSend = PageToSendTo + VariablePlaceholder + MyVariable;
xhttp.open("GET", UrlToSend, false);
xhttp.send();
}
然后只需調用該函數(shù)而不是嘗試設置
savedNumberOfLessonInDay(number);
- 3 回答
- 0 關注
- 158 瀏覽
添加回答
舉報