我正在尝试修复Instagram API的Ajax分页
仅显示20张照片。 “加载更多”按钮不起作用。
在控制台中:
Uncaught ReferenceError: maxid is not defined
这是index.php:
<script>
$(document).ready(function() {
$('#more').click(function() {
var max_id = $(this).data('nextid');
$.ajax({
type: 'GET',
url: 'ajax.php',
data: {
max_id: maxid
},
dataType: 'json',
cache: false,
success: function(data) {
// Output data
$.each(data.images, function(i, src) {
$('#photos').append('<li><img src="' + src + '"></li>');
});
// Store new maxid
$('#more').data('maxid', data.next_id);
}
});
});
});
</script>
<?php
require_once 'instagram.class.php';
$instagram = new Instagram(array(
'apiKey' => '*****',
'apiSecret' => '*****',
'apiCallback' => '******'
));
// Receive OAuth code parameter
$code = $_GET['code'];
if (true === isset($code)) {
$data = $instagram->getOAuthToken($code);
$instagram->setAccessToken($data);
$media = $instagram->getUserMedia();
}
?>
<ul id="photos">
<?php foreach( $media->data as $data ): ?>
<li><img src="<?php echo $data->images->thumbnail->url ?>"></li>
<?php endforeach; ?>
<?php echo "<br><button id=\"more\" data-maxid=\"{$media->pagination->next_max_id}\">Load more ...</button>"; ?>
ajax.php:
require_once 'instagram.class.php';
$instagram = new Instagram(array(
'apiKey' => '****',
'apiSecret' => '*****',
'apiCallback' => '*******'
));
// Receive OAuth code parameter
$code = $_GET['code'];
if (true === isset($code)) {
$data = $instagram->getOAuthToken($code);
// Initialize class for public requests
$instagram->setAccessToken($data);
$media = $instagram->getUserMedia();
// Receive AJAX request and create call object
$maxID = $_GET['next_max_id'];
$clientID = $instagram->getApiKey();
$call = new stdClass;
$call->pagination->next_max_id = $maxID;
$call->pagination->next_url = "https://api.instagram.com/v1/users/self/media/recent?client_id={$clientID}&max_id={$maxID}";
// Receive new data
$media = $instagram->pagination($call);
// Collect everything for json output
$images = array();
foreach ($media->data as $data) {
$images[] = $data->images->thumbnail->url;
}
echo json_encode(array(
'next_id' => $media->pagination->next_max_id,
'max_id' => $media->pagination->max_id,
'images' => $images
));
我正在使用https://github.com/cosenary/Instagram-PHP-API
谢谢!
答案 0 :(得分:0)
如何更清楚:
Uncaught ReferenceError: maxid is not defined
您的代码中未定义 maxid
。在这一行中定义的是max_id
:
var max_id = $(this).data('nextid');
答案 1 :(得分:0)
只有2个地点maxid
:
下面:
$。AJAX({
...
max_id:maxid
},
在这里:
//存储新的maxid
$(&#39;#more&#39;)。数据(&#39; maxid&#39;,data.next_id);
当您使用定义的max_id
替换这些出现时(感谢@mathieu),应该修复它。
在ajax.php
中,您有一行:
$ maxID = $ _GET [&#39; next_max_id&#39;];
这与您上面的电话号码相对应,您的电话号码为max_id
。好像你混合了一些next/max/id
。如果您查看代码并清理这些ID,它应该可以正常工作。
答案 2 :(得分:0)
看起来像是
.data('nextid');
是一个不小心的错误,因为DOM中不存在这种错误。除非它在其他地方,你没有发布它。
你的意思是
.data('maxid');
答案 3 :(得分:0)
您需要通过点击传递event
参数
并从data
获取event.target
将第一行代码更改为:
$('#more').click(function( event ) {
var max_id = $(event.target).data('nextid');