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_like_id」ではなく「max_id」に設定すると、同じ画像が何度も読み込まれます...

助けてくれてありがとう!

4

1 に答える 1

1

提供されたコードに基づいて、オブジェクトを間違って参照しているようです。data.data[i]は返されたオブジェクトを参照し、次に--data内のプロパティを参照します。これは、 の使用によって示されるように、配列のように見えます。ただし、宣言している場所やオブジェクト内のプロパティが表示されません。datadata.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その配列内のオブジェクトを返します。

あなたの質問で気づいたことの 1 つimg.user.は、末尾に..

于 2012-07-19T19:53:17.630 に答える