flickr.photos.search 适用于 flickr 的资源管理器,但不适用于我的 getJSON 调用
flickr.photos.search works on flickr's explorer but not in my getJSON call
我正在尝试编写一个使用 flickr api 的简单网页。首先,我使用 "flickr.places.find" 来获取 json 文件。然后我获取 json 文件中的第一个对象,并使用它的 "woeid" 和 "place_id" 尝试使用 "flickr.photos.search" 方法获取 json 文件有关地点照片的信息。我的 "flickr.places.find" getJSON 调用工作正常,但 "flickr.photos.search" 调用不起作用。
这是我的代码(删除了 post 的用户名和 api_key):
<html>
<head>
<link href="bootstrap-3.3.6-dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<style>
</style>
<!--flickr API Script-->
<script>
//API key
var api_key = "API_KEY";
//User ID
var user_id = "USER_ID";
/*Given a flikr api method, and any number of arguments in the format of:
argumentName=value, return the url to be called using getJSON. This url will not
call a callback function, and will return a JSON file*/
function makeAPIURL(method /*, ¶meter1=val1, ¶meter2=val2, ...*/) {
var api_url = "https://api.flickr.com/services/rest/?" + "&method=" + method;
/*Append any arguments=value*/
for(var i = 1; i < arguments.length; i++) {
api_url += "&" + arguments[i];
}
api_url += "&api_key=" + api_key +
"&user_id=" + user_id +
"&format=json" +
"&nojsoncallback=1";
return api_url;
}
function queryflickr() {
var placeToFind = $("#placeToFind").val();
/*Create api url to get the location info from flickr*/
var api_url = makeAPIURL("flickr.places.find", "query=" + placeToFind);
console.log("apiurl:" + api_url);
/*Retrieves the JSON*/
$.getJSON(api_url, function(json) {
console.log(json.places);
/*At this point we have the JSON file with places that are related to the queried string*/
var placeFound = json.places.place[0];
/*Tell the user what was found*/
$("#retStatement").text('Found location "' + placeFound._content + '" which is type ' + placeFound.place_type);
/*Get photos of the place from flickr*/
/*Given the photos.search method, world ID, place ID*/
api_url = makeAPIURL("flickr.photos.search", "woe_id=" + placeFound.woeid, "place_id=" + placeFound.place_id);
console.log("Querying flickr for place's photos using apiurl:" + api_url);
/*Retrieve the JSON*/
$.getJSON(api_url, function(json) {
console.log(json);
});
})
}
</script>
</head>
<body>
<input type="text" placeholder="continent, country, region, locality, or neighborhood" class="form-control" id="placeToFind">
<center>
<button class="btn btn-danger" id="button" onclick="queryflickr()">Populate!</button>
<p id="retStatement"></p>
</center>
</body>
</html>
对于这个地方,我输入 "Africa" 并单击按钮执行 flickr api 调用。第一个要执行的 url 是这个(再次,删除了 API_KEY 和 USER_ID 所以它不会工作 ):
先getJSON(flickr.places.find):
我的api电话:
哪个 returns 正是 flickr 浏览器 returns:
第二次getJSON(flickr.photos.search):
但是我的 url:
returns这个:
{"photos":{"page":1,"pages":0,"perpage":250,"total":"0","photo":[]},"stat":"ok"}
没有错误,只是一个空数组。我也使用了与资源管理器相同的两个参数。
我已经盯着这个看了几个小时了,但我没有看到问题所在。
我设法确定了问题所在。在构造 api url 时,我还附加了我的 user_id,flickr.photos.serach 函数认为它应该用作参数。这导致 getJSON 调用尝试获取 我 在非洲拍摄的每张照片,总数为 0,导致数组为空。
我正在尝试编写一个使用 flickr api 的简单网页。首先,我使用 "flickr.places.find" 来获取 json 文件。然后我获取 json 文件中的第一个对象,并使用它的 "woeid" 和 "place_id" 尝试使用 "flickr.photos.search" 方法获取 json 文件有关地点照片的信息。我的 "flickr.places.find" getJSON 调用工作正常,但 "flickr.photos.search" 调用不起作用。
这是我的代码(删除了 post 的用户名和 api_key):
<html>
<head>
<link href="bootstrap-3.3.6-dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<style>
</style>
<!--flickr API Script-->
<script>
//API key
var api_key = "API_KEY";
//User ID
var user_id = "USER_ID";
/*Given a flikr api method, and any number of arguments in the format of:
argumentName=value, return the url to be called using getJSON. This url will not
call a callback function, and will return a JSON file*/
function makeAPIURL(method /*, ¶meter1=val1, ¶meter2=val2, ...*/) {
var api_url = "https://api.flickr.com/services/rest/?" + "&method=" + method;
/*Append any arguments=value*/
for(var i = 1; i < arguments.length; i++) {
api_url += "&" + arguments[i];
}
api_url += "&api_key=" + api_key +
"&user_id=" + user_id +
"&format=json" +
"&nojsoncallback=1";
return api_url;
}
function queryflickr() {
var placeToFind = $("#placeToFind").val();
/*Create api url to get the location info from flickr*/
var api_url = makeAPIURL("flickr.places.find", "query=" + placeToFind);
console.log("apiurl:" + api_url);
/*Retrieves the JSON*/
$.getJSON(api_url, function(json) {
console.log(json.places);
/*At this point we have the JSON file with places that are related to the queried string*/
var placeFound = json.places.place[0];
/*Tell the user what was found*/
$("#retStatement").text('Found location "' + placeFound._content + '" which is type ' + placeFound.place_type);
/*Get photos of the place from flickr*/
/*Given the photos.search method, world ID, place ID*/
api_url = makeAPIURL("flickr.photos.search", "woe_id=" + placeFound.woeid, "place_id=" + placeFound.place_id);
console.log("Querying flickr for place's photos using apiurl:" + api_url);
/*Retrieve the JSON*/
$.getJSON(api_url, function(json) {
console.log(json);
});
})
}
</script>
</head>
<body>
<input type="text" placeholder="continent, country, region, locality, or neighborhood" class="form-control" id="placeToFind">
<center>
<button class="btn btn-danger" id="button" onclick="queryflickr()">Populate!</button>
<p id="retStatement"></p>
</center>
</body>
</html>
对于这个地方,我输入 "Africa" 并单击按钮执行 flickr api 调用。第一个要执行的 url 是这个(再次,删除了 API_KEY 和 USER_ID 所以它不会工作 ):
先getJSON(flickr.places.find):
我的api电话:
哪个 returns 正是 flickr 浏览器 returns:
第二次getJSON(flickr.photos.search):
但是我的 url:
returns这个:
{"photos":{"page":1,"pages":0,"perpage":250,"total":"0","photo":[]},"stat":"ok"}
没有错误,只是一个空数组。我也使用了与资源管理器相同的两个参数。
我已经盯着这个看了几个小时了,但我没有看到问题所在。
我设法确定了问题所在。在构造 api url 时,我还附加了我的 user_id,flickr.photos.serach 函数认为它应该用作参数。这导致 getJSON 调用尝试获取 我 在非洲拍摄的每张照片,总数为 0,导致数组为空。