由于AJAX GET请求,Javascript变量未定义
我有以下功能。当我尝试记录变量时,它会给我未定义的。我认为这是因为AJAX GET调用的加载时间太长,但我不知道如何修复它 编辑:是,所有值都正确。console.log记录正确的值,因此函数中的所有内容都正常工作。只是回报不起作用 有什么想法吗由于AJAX GET请求,Javascript变量未定义,javascript,ajax,Javascript,Ajax,我有以下功能。当我尝试记录变量时,它会给我未定义的。我认为这是因为AJAX GET调用的加载时间太长,但我不知道如何修复它 编辑:是,所有值都正确。console.log记录正确的值,因此函数中的所有内容都正常工作。只是回报不起作用 有什么想法吗 function loadOnderhoud() { var username = window.sessionStorage.getItem("huidigeGebruiker"); var url = "restservices
function loadOnderhoud() {
var username = window.sessionStorage.getItem("huidigeGebruiker");
var url = "restservices/gebruiker?Q1=" + username;
$.ajax({
url : url,
method : "GET",
beforeSend : function(xhr) {
var token = window.sessionStorage.getItem("sessionToken");
xhr.setRequestHeader('Authorization', 'Bearer ' + token);
},
success : function(data) {
var onderhoud;
$(data).each(function (index) {
if (this.geslacht == "m"){
onderhoud = (66 + (13.7 * this.gewicht) + (5 * (this.lengte*100)) - (6.8 * this.leeftijd)) * this.activiteit;
}
else if (this.geslacht == "v"){
onderhoud = (655 + (9.6 * this.gewicht) + (1.8 * (this.lengte*100)) - (4.7 * this.leeftijd)) * this.activiteit;
}
});
console.log(onderhoud);
return onderhoud;
},
});
}
function loadAdviezen(){
var onderhoud = loadOnderhoud();
}
问题与ajax的成功函数返回有关 正确的做法是提供回拨功能:
function loadOnderhoud(getData) {
var username = window.sessionStorage.getItem("huidigeGebruiker");
var url = "restservices/gebruiker?Q1=" + username;
$.ajax({
url : url,
method : "GET",
beforeSend : function(xhr) {
var token = window.sessionStorage.getItem("sessionToken");
xhr.setRequestHeader('Authorization', 'Bearer ' + token);
},
success : function(data) {
var onderhoud;
$(data).each(function (index) {
if (this.geslacht == "m"){
onderhoud = (66 + (13.7 * this.gewicht) + (5 * (this.lengte*100)) - (6.8 * this.leeftijd)) * this.activiteit;
}
else if (this.geslacht == "v"){
onderhoud = (655 + (9.6 * this.gewicht) + (1.8 * (this.lengte*100)) - (4.7 * this.leeftijd)) * this.activiteit;
}
});
console.log(onderhoud);
getData(onderhoud);
},
});
}
function getData(data)
{
var onderhoud = data;
}
loadOnderhoud(getData);
成功仅在ajax请求完成后执行。您确定您的响应返回了正确的值吗?可能是
this。geslacht
与m
或v
不匹配。…@SabirAmeen是的,它是成功的,因为它确实记录了日志。它返回一个双精度。所有值都是正确的,函数可以运行。您确定onderhoud至少初始化了一次吗?async false不起作用,我将尝试您的第二个建议。@Liam,是的,我得到了您的答案,答案是错误发布的,我还添加了第二种方法,我的错误:)好的,我正在删除它。未捕获的引用错误:未定义getData是否有live demo?还是普朗克?