0

我使用 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”,它只会一遍又一遍地加载相同的图像......

谢谢你的帮助!

4

1 回答 1

1

根据提供的代码,您似乎错误地引用了您的对象。data.data[i]指的是返回的对象,data,然后是 of 中的一个属性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);
}

演示: //jsfiddle.net/DdqxT/

上面的代码采用data对象,然后循环遍历images属性以返回其数组中的对象。

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

于 2012-07-19T19:53:17.630 回答