2017-06-15 53 views
0

我有以下功能。當我嘗試登錄該變量時,它給了我未定義的內容。我想這是因爲來自AJAX GET調用的加載時間,但我不知道如何修復它。由於AJAX GET請求,Javascript未定義變量

編輯:是的,所有的值都是正確的。 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(); 
} 
+0

成功只執行一次Ajax請求完成了。 – SabirAmeen

+1

你確定你的回答是否返回了正確的值? –

+0

大概'this.geslacht'不匹配'm'或'v' ... – Fr0zenFyr

回答

1

問題是從阿賈克斯成功函數返回相關的,

正確的方式做的提供的回調函數

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); 
+0

async false不起作用,我會嘗試第二個建議。 –

+0

@Liam,是的,我得到了你的觀點答案是錯誤的張貼我加入第二種方式也是,我的錯誤:) –

+1

好吧我正在刪除它。 –