2017-12-10 18 views
0

JSONファイルの特定の要素を外部REST APIから、JSコードで使用できるローカル辞書変数に書き込もうとしています。私のAJAX GETリクエストは正常に動作しますが、変数をAJAXリクエストの外側に出力すると、コード外で取得したデータにアクセスできないようです。私はこの仕事をするためにコールバック関数を使う必要があることを知っていますが、私はそれを正しく行うようには思えません。これは、私がコールバック関数を使用する前にどのように見えるかです:ajax GETリクエストで動作するコールバック関数を取得できません

<script> 

var LeagueTable = [] 

    $.ajax({ 
     url: 'http://api.football-data.org/v1/competitions/445/leagueTable/?', 
     headers: { 
      'X-Auth-Token':'' 
     }, 
     method: 'GET', 
     dataType: 'json', 
     success: function(data) { 
     console.log(data) 
     for (i = 0; i < 20; i++) { 
     LeagueTable[data.standing[i].teamName] = data.standing[i].position 
     } 
} 
    }); 


// LeagueTableAppend(LeagueTable) 
console.log(LeagueTable["Watford FC"]) 

</script> 

をしかし、辞書がAJAXリクエストの外に追加されていないので、私は、コールバック関数でこれを変更しようとしたが、私はどのように本当にわからないんだけどそれらを実装する。 LeagueTableディクショナリにforループで追加された値を保持したいだけでした。そして、これは私のコールバック関数の使用を試みたものですが、うまくいきません。

<script> 

var LeagueTable = [] 

function getdata(){ 
    $.ajax({ 
     url: 'http://api.football-data.org/v1/competitions/445/leagueTable/?', 
     headers: { 
      'X-Auth-Token':'' 
     }, 
     method: 'GET', 
     dataType: 'json', 
     success: handleData 

    }); 
    } 


function handleData(data){ 
    // console.log('success: '+ JSON.stringify(data)); 
    for (i = 0; i < 20; i++) { 
    LeagueTable[data.standing[i].teamName] = data.standing[i].position 
    // console.log(JSON.stringify(data.standing[i].teamName) + ':' + data.standing[i].position); 
          } 
         } 
getdata(handleData) 
// LeagueTableAppend(LeagueTable) 

console.log(LeagueTable["Watford FC"]) 
</script> 
+0

これは時代の古い物語です。たとえば、[here](https:// stackoverflow。)などの[こちら](https://stackoverflow.com/questions/10652887/is-it-posible-to-use-ajax-respone-outside-of-it)を参照してください。 com/questions/21052258/passing-data-outside-ajax-call-jquery)... – dhilt

答えて

0

コールバックコードは要求が返された後にのみ実行されますが、要求が送信された後はすぐに印刷コードが実行されます。

関連する問題