【问题标题】:Construct the URL from JSON feed从 JSON 提要构建 URL
【发布时间】:2011-11-04 01:38:06
【问题描述】:

谁能告诉我我在这里做错了什么?

我正在尝试构建图像 URL,但使用的是 flickr.photos.search 方法 现在(我需要显示接近访问者地理位置的图像),我有它 之前使用 groups_pool.gne 并且 JSON 提要不同(更简单) 格式化但现在..

URL 工作正常,我得到了包含我需要的所有数据的数组(农场、服务器、 secret 和 id),但无法构造照片的 url。

$.getJSON("http://api.flickr.com/services/rest/?method=flickr.photos.search&api_\
key=KEY&format=json&privacy_filter=0&media=photos&has_geo=1&accuracy=13&sort=int\
erestingness-desc&content_type=1&per_page=32&extras=geo,owner_name&page=1&radius\
_units=km&radius=1.521739&lat=40.952532&lon=-4.1326349999999366&text=Alcazar&jso\
ncallback=jsonp1320163051486", getJSONimages);

function getJSONimages(data) {
  var htmlString = "";

  $.each(data.photos.photo, function(i,item){
    htmlString += '<img src="http://farm'+ item.farm +'.static.flickr.com/'+
      item.server +'/'+ item.id +'_'+ item.secret +'_m.jpg" />';
  });

  $('#slideshow').html(htmlString);

谢谢。


我已经在附加内容中添加了 url_m,在 URL 中获取 JSON 提要,我在提要中获得了完整的 URL,这应该会有所帮助,因为我不必连接其余部分,但仍然无法工作。

我无法让它工作,这非常令人沮丧,因为我知道这很简单。 好吧,显然不适合我。

这是我的函数,在我得到循环中的 url_m 之后:

function getJSONimages(data) {
var htmlString = "";
$.each(data.photos.photo, function(i,item){
// var url = (item.url_m).replace("\", "");
htmlString += '<img src="' + item.url_m + '" />';
});
$('#slideshow').html(htmlString);
}

即使我使用“url”变量或不使用,同样的结果。

但是,我注意到了一些事情。

在使用 groups_pool.gne 的提要中,我可以从中提取照片 成功了,我就这样去 media.m 了:

$.each(data.items, function(i,item){
var biggestSize = (item.media.m).replace("_m.jpg", ".jpg");
htmlString += '<img src="' + biggestSize + '" />';

请注意,我有项目,然后是媒体,然后是带有其自身价值的 m!实际上是 项目。[媒体:{m:PHOTOURL}]。

在使用 flickr.photos.search 方法的其他 JSON 提要中,我有 以下“对象路径”: jsonFlickrApi.photos.photo[{url_m:PHOTOURL}]

并尝试使用这个循环:

$.each(data.photos.photo, function(i,item){
htmlString += '<img src="' + item.url_m + '" />';

我认为这是我的问题,但我不知道如何解决它。它是 显然这两个提要之间存在不同的结构:

项目。[媒体:{m:PHOTOURL}] 照片.照片[{url_m:PHOTOURL}]

我将更多地研究 jQuery 循环。有什么想法吗?

【问题讨论】:

  • 如果 .html() 功能不起作用,您可以使用 .append() 代替。 $('#slideshow').append(htmlString);我尝试测试您的代码,但未接受 api 密钥。
  • 您获取的 URL 远不能按原样使用。似乎有命令行换行符转义(行尾的斜杠)。那只是在stackoverflow上吗?还值得一问:您已经用您的实际 API 密钥替换了 KEY 对吗?而jsoncallback=blah——通常由 jQuery 之类的东西添加并标识一个唯一的请求。这只是一个示例,还是您一遍又一遍地尝试相同的回调?
  • @Andre Dublin,如果您想尝试,我已将密钥通过电子邮件发送给您。在那之后我可以尝试追加,但这令人沮丧,因为我之前能够使用另一个 JSON 提要构建一个 URL,只是格式不同并且它有效。你可以在这里看到它:[链接]www.demetriad.co.uk/flickr-test
  • @editor,是的,我已经更换了钥匙。我试过在 URL 中使用和不使用回调,没有区别。

标签: javascript jquery json getjson flickr


【解决方案1】:

奇怪的是,这些文档没有提到获得农场。你能在 $.each 循环中 console.log 你的项目,看看你得到了什么吗? http://www.flickr.com/services/api/flickr.photos.search.html

这显然是正确的 URL 格式,尽管假设您获得了所有这些部分: http://www.flickr.com/services/api/misc.urls.html

编辑 你能告诉我这是什么意思吗(在警告框中):

$.each(data.photos.photo, function(i,item){
  var url = 'http://farm'+ item.farm +'.static.flickr.com/' + item.server +'/'+ item.id +'_'+ item.secret +'_m.jpg';
  alert(url);
});

【讨论】:

  • 我不知道如何记录它。我知道是正确的格式,这就是为什么我非常确定我做错了连接..或循环。
  • 没什么。没有警告框:/.
【解决方案2】:

URL 不是 JSON 对象,因此您无法解析它。 您正在尝试获取 URL 参数。 包括以下函数,并像这样使用它。

lat = querySt('lat');
lon = querySt('lon');


function querySt(ji) {

    hu = window.location.search.substring(1);

    gy = hu.split("&");

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

            ft = gy[i].split("=");

            if (ft[0] == ji) {

            return ft[1];

        }

    }

}

你可能想修改这部分

hu =window.location.search.substring(1);

hu = yourURLVariable;

如果您从其他地方获取 URL。

【讨论】:

猜你喜欢
  • 2012-11-10
  • 1970-01-01
  • 1970-01-01
  • 2017-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-11
  • 2018-03-30
相关资源
最近更新 更多