【问题标题】:jQuery AJAX $.each with Instagram JSON带有 Instagram JSON 的 jQuery AJAX $.each
【发布时间】:2012-07-21 14:19:41
【问题描述】:

我使用 ajax 函数将更多照片加载到页面中。我将此功能用于用户上传的图像及其提要,它们都在 API url 末尾使用“max_id”参数...当我尝试将此功能用于喜欢时,它不起作用,因为喜欢的媒体url 以“max_like_id”结尾。我不知道为什么,但也许你们可以帮助我!这是我所有的代码:

<script type="text/javascript">
$(document).ready(function() {
  $('#more').click(function() {
var user   = $(this).data('user'),
maxid = $(this).data('maxid');

$.ajax({
type: 'GET',
url: 'ajaxloadlikes.php',
data: {
  user: user,
  max_like_id: maxid
},
dataType: 'json',
cache: false,
success: function(data) {
$.each(data.images, function(i, img) {
$('ul#photos').append('<a href="/media.php?user=' + img.user + '&id=' + img.id + '"><img src="' + img.url + '" alt="" /></a>');
});
// Store new maxid
$('#more').data('maxid', data.next_id);
 }
});
 });
});

</script>

<a id="more" data-maxid="'.$liked_media->pagination->next_max_like_id.'" data-user="self'">Load More</a>

然后我的 ajaxloadlikes.php 有这个:

$maxID = $_GET['max_like_id'];
$userID = $_GET['user'];
$accessID = **access token**;

$next = "https://api.instagram.com/v1/users/self/media/liked?access_token={$accessID}&max_like_id={$maxID}";

$json = file_get_contents($next);

$media = json_decode($json);

// Collect everything for json output
$images = array();
foreach ($media->data as $data) {
$images[] = array('id' => $data->id, 'url' => $data->images->low_resolution->url, 'user' => $data->user->username);
}

echo json_encode(array('next_id' => $mine->pagination->next_max_like_id, 'images' => $images));

如果我将 $next url 设置为“max_id”而不是“max_like_id”,它只会一遍又一遍地加载相同的图像......

感谢您的帮助!

【问题讨论】:

  • 您有任何错误吗?您是否收到来自 AJAX 响应的预期结果(查看您的浏览器控制台)?
  • 这里有语法错误用户。 + '& 是在你的文件中吗?
  • 我单击以加载更多图片的按钮什么也没做,我使用相同的文件将更多图片加载到我的提要中,但这是针对用户喜欢的图片...我开始遇到问题当我从 Instagram 检索“next_max_like_id”而不是“next_max_id”时

标签: javascript jquery ajax instagram


【解决方案1】:

根据提供的代码,您似乎错误地引用了您的对象。 data.data[i] 指的是返回的对象data,然后是data--data.data 中的一个属性,它看起来是一个数组,如[i] 的使用所示。但是,我没有看到您在对象中声明 idata 属性的位置。

由于缺乏支持信息,我在示例中做了一些假设:

var data = {
    "next_id": "*next-id*",
    "images": [
        {
        "id": "*image id*",
        "url": "*image low_resolution link*",
        "user": "*user*"},
    {
        "id": "*image id*",
        "url": "*image low_resolution link*",
        "user": "*user*"}
    ]
};

var json = data.images;

for(var i = 0; i < json.length; i++) {
    var img = json[i];
    var item = '<li><div class="image"><a href="/media.php?user=' + img.user + '&id=' + img.id + '"><img src="' + img.url + '" alt="" /></a><a href="/media.php?user=' + img.user + '&id=' + img.id + '"><img class="hoverimage" src="/zoom.png" alt="" /></a></div></li>';
    $('ul#photos').append(item);
}

演示:http://jsfiddle.net/DdqxT/

以上代码获取data 对象,然后循环通过images 属性以返回其数组中的对象。

我在您的问题中注意到的一件事是您的 img.user. 不应包含结尾的 .

【讨论】:

  • hmm,我对此感到困惑,因为我使用完全相同的代码将更多图像加载到我的“提要”中,而且效果非常好......我会试试你的回复并得到回到你身边。唯一的问题是它是一个 ajax 调用,我从 URL 接收信息
  • 我已经更新了我的所有代码,以向您展示我所拥有的一切,如果您在这里发现任何错误,请告诉我...
猜你喜欢
  • 2020-06-05
  • 2013-02-12
  • 2011-03-03
  • 2011-03-01
  • 1970-01-01
  • 2013-05-12
  • 2013-05-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多