由于AJAX GET请求,Javascript未定义变量

时间:2017-06-15 12:01:45

标签: javascript ajax

我有以下功能。当我尝试记录变量时,它给了我未定义的。我认为这是因为AJAX GET调用的加载时间,但我不知道如何修复它。

编辑:是的,所有值都是正确的。 console.log记录正确的值,因此函数中的所有内容都可以正常工作。这只是不起作用的回报。

有什么想法吗?

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();
}

1 个答案:

答案 0 :(得分:1)

问题与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);