最初のリクエストが完了する前に 2 番目の$.getJson()
リクエストが実行されており、最初に作成した変数は 2 番目のリクエストの範囲外です。
$.getJson()
最初のリクエストが完了するまで実行されないように、最初のリクエストのコールバック内に2 番目のリクエストを配置します。
$.getJSON("http://tagthe.net/api/?url=http://www.knallgrau.at/en&view=json&callback=MyFunc",function(data){
var searchterm=data[location];
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags="+searchterm+"&tagmode=any&format=json&jsoncallback=?",
function(data){
$.each(data.items, function(i,item){
$("<img/>").attr("src", item.media.m).appendTo("#images");
if ( i == 3 ) return false;
});
});
});
編集:
$.ajax()
これは、最初の呼び出しに使用するバージョンです。直接指定jsonp
して、URLのコールバックをなくしました。
実際の例をご覧ください: http://jsfiddle.net/uGJYr/2/ (更新)
$.ajax({
url:"http://tagthe.net/api/?url=http://www.knallgrau.at/en&view=json",
dataType:'jsonp',
success:function(data){
// You needed to dig deeper to get the location
var searchterm=data.memes[0].dimensions.location[0];
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags="+searchterm+"&tagmode=any&format=json&jsoncallback=?",
function(data){
$.each(data.items, function(i,item){
$("<img/>").attr("src", item.media.m).appendTo("#images");
if ( i == 3 ) return false;
});
});
}
});
編集:
var searchterm =
返されるデータ オブジェクトが元のコードで示唆されたよりもはるかに複雑であるため、上記の行を変更しました。
必要なもの:
var searchterm=data.memes[0].dimensions.location[0];
...最初のリクエストから返されるデータは次のようになるためです。
{"memes":[
{ "source":"http://www.knallgrau.at/en",
"updated":"Tue Jun 08 19:29:51 CEST 2010",
"dimensions":{ "topic":["content","knallgrau","overview","agency","nullItem","Deutsch","foundation","Company","management","English"],
"content-type":["text/html"],
"author":["vi knallgrau"],
"person":["dieter rappold","Dieter Rappold"],
"title":["Company - vi knallgrau"],
"location":["Austria","Vienna"],
"language":["english"],
"size":["5494"]
}
}
]
}