2016-05-12 11 views
-1

私はカスタム関数でajax関数を持っています。私はカスタム関数を呼び出して、ajax関数から変数を取得する必要があります。なぜこれはできないのですか?Javascript:function in function and return

第一のアイデア:

<script> 
    function getValue(){ 

     $.nette.ajax({ 
      url: "http://example.com/request", 
      contentType: 'application/json', 
      dataType: 'json', 
      success: function(payload) { 
       console.log(payload.value); // contains RIGHT value 
       return payload.value; 
      } 
     }); 
    } 

    var try = getValue(); 
    console.log(try); // = undefined 
</script> 

第二のアイデア:

<script> 
    function getValue(){ 
     var returning = ""; 

     $.nette.ajax({ 
      url: "http://example.com/request", 
      contentType: 'application/json', 
      dataType: 'json', 
      success: function(payload) { 
       returning = payload.value; 
       console.log(payload.value); // contains RIGHT value 
      } 
     }); 
      console.log(returning); // = "" 
    } 

</script> 
+1

あなたの非同期呼び出しが完了する前に、コールバックを使って何かを実行していますか?console.log(戻る) 'が実行中です。 –

答えて

2

Ajaxは約束です。

function getValue(callback){ 
    $.nette.ajax({ 
     url: "http://example.com/request", 
     contentType: 'application/json', 
     dataType: 'json', 
     success: function(payload) { 
      callback(playload); 
     } 
    }); 
}