Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
由于AJAX GET请求,Javascript变量未定义_Javascript_Ajax - Fatal编程技术网

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

由于AJAX GET请求,Javascript变量未定义,javascript,ajax,Javascript,Ajax,我有以下功能。当我尝试记录变量时,它会给我未定义的。我认为这是因为AJAX GET调用的加载时间太长,但我不知道如何修复它 编辑:是,所有值都正确。console.log记录正确的值,因此函数中的所有内容都正常工作。只是回报不起作用 有什么想法吗 function loadOnderhoud() { var username = window.sessionStorage.getItem("huidigeGebruiker"); var url = "restservices

我有以下功能。当我尝试记录变量时,它会给我未定义的。我认为这是因为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();
}

问题与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?还是普朗克?