2017-01-29 4 views
2

私は.getjsonで夢中になります。私は.getjsonを使用してWikipedia APIからデータを取得しようとしていますが、正常に動作します。 Wikipedia APIが10個の選択肢を返し、それぞれの選択をループする前に、forループ内の配列の長さを調べようとしています。データはまだ '.getjson'から利用できません。Javascript、Jquery Codepen

Hereは私の作品です。 forループでconsole.log(sp.length);sp.lengthを見てください。彼らは同様のデータを与えるべきですが、そのうちの1つは定義されておらず、もう1つは正常に動作しています。ここで

私のJSコードです:

$(document).ready(function() { 


var api_wiki="https://en.wikipedia.org/w/api.php?action=query&format=json&list=search&titles=Main+Page&srsearch=cat&srwhat=text&callback=?"; 
var sp; 

$.getJSON(api_wiki,function(data){ 
    sp=data.query.search; 
// console.log(sp.length); 
}); //End of getJSON 

for (var i=0;i<sp.length;i++){ 

} 


});//End of get ready 

はなぜconsole.logはどちらも同じ変数を参照するにもかかわらず、二つの異なる答えを与えるのでしょうか? 1つは定義されておらず、もう1つは正常に動作しています。 問題が直面している問題のみを反映するように質問を編集しました。

+0

あなたは問題とは何の関係もありませんすべてのコードを削除した場合、それはおそらく容易になるだろう。..します。http:関数の内部ループのために入れてgetJSONのonReadyイベントで関数を呼び出して試してみてください//sscce.org/あまりにも多くの人々がトラフを見たいと思っているとは思わない。問題のある行為を2行で表示するだけです。 – Nanne

答えて

0

まだ持っていないデータを使用するようにjavascriptを要求することはできません。データが到着するのを待つ必要があります。

$(document).ready(function() { 


var api_wiki="https://en.wikipedia.org/w/api.php?action=query&format=json&list=search&titles=Main+Page&srsearch=cat&srwhat=text&callback=?"; 
var sp; 

$.getJSON(api_wiki,function(data){ 
    sp=data.query.search; 
    console.log(sp.length); 
    workWithTheData(sp); 
}); //End of getJSON 

function workWithTheData(sp){ 
    for (var i=0;i<sp.length;i++){ 
     console.log(sp[i]); 
    } 
} 


});//End of get ready 
+0

ありがとうたくさんのラジオそれは今働く、あなたは命の恩人です! –

関連する問題