2017-06-15 4 views
0

私は以下の機能を持っています。私はvaribleを記録しようとすると、それは私に未定義を与える。私はそれがAJAX GET呼び出しからの読み込み時間のためだと思うが、私はそれを修正する方法を知らない。AJAX GETリクエストによるJavascript未定義変数

EDIT:はい、すべての値が正しいです。 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

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

非同期の偽は機能しません、私はあなたの2番目の提案を試みます。 –

+0

@Liam、はい私はあなたのポイントを得た答えは間違って投稿された私はまた、私の間違いを追加していた:) –

+1

私はそれを削除します。 –

関連する問題