2016-08-09 5 views
0

再び、私は壁に向かって頭を叩いて、返されたデータのこの部分をajaxから関数外の変数にプルしようとしました。ajaxリクエストから値を取得して、成功の外の変数に保存する

値を返すと、alert()が正しい値を示したときに常に値が返されます。undefined

function getItemInfo(itemHashPass) { 

    $.ajax({ 
     url: 'index.php//Welcome/getItem', //This is the current doc 
     type: "POST",  
     data: 'iHash='+itemHashPass, 
     dataType: "json", 
     async: false, 
     success: function(data){ 

      return data.Response.data.inventoryItem.itemName; 

     } 
    }); 

} 

ジョナサンは、あなたがコールバックであなたのビジネスロジックを書くべきか、繰延構文を試すことができます言ったように、私も

function getItemInfo(itemHashPass) { 
    var tmp = null; 
    $.ajax({ 
    url: 'index.php//Welcome/getItem', //This is the current doc 
    type: "POST",  
    data: 'iHash='+itemHashPass, 
    dataType: "json", 
    async: false, 
    success: function(data){ 

     tmp = data.Response.data.inventoryItem.itemName; 

    } 
}); 
return tmp; 
} 
+1

あなたは 'success'コールバックから' return'するべきではありません。コールバックであなたのビジネスをしてください。 –

+0

私はちょうど –

+0

を試した別の方法で編集を追加しました。あなたは* do *する必要がありません。変数を割り当てるだけではありません。だから、あなたは 'itemName'で何をしようとしていましたか?それが何であれ、コールバック内で*行う。 –

答えて

0

を試してみました。この場合、それは次のようになります

function yourBusinnesLogicFunction() { 
     ... 
     getItemInfo("password_hash_value").done(
      function(data){ 
       alert(data.Response.data.inventoryItem.itemName); 
      } 
     ) 
    } 

    function getItemInfo(itemHashPass) { 
     var tmp = null; 
     return $.ajax({ 
     url: 'index.php//Welcome/getItem', //This is the current doc 
     type: "POST",  
     data: 'iHash='+itemHashPass, 
     dataType: "json", 
     async: false, 
     }) 
    } 
関連する問題