2012-10-31 28 views
4

我试图修复阿贾克斯Instagram的API分页阿贾克斯Instagram的API分页试图修复错误

只显示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

谢谢!

Uncaught ReferenceError: maxid is not defined 

maxid没有在你的代码中定义:

回答

0

比岂是清晰的。什么被定义为在该行max_id

var max_id = $(this).data('nextid'); 
+0

**此错误在索引点击“装载更多”按钮时。php:** >未捕获ReferenceError:未定义maxid 那么我需要把** maxid **而不是? 有max_id和next_max_id从性反应: { “分页”:{ “next_url”:“https://api.instagram.com/v1/users/********/media/ ?最近=的access_token&33174964.1fb234f.707411a10e624f13b6b08dd806df1eab = max_id 278169081097328255_33174964" , “next_max_id”: “278169081097328255_33174964” }, – nuttelko

0

只是有2处与maxid

这里:

$.ajax({
...
max_id: maxid
},

这里:

// Store new maxid
$('#more').data('maxid', data.next_id);

当您更换这些发生与您定义的max_id(感谢@mathieu)它应该被修复。

在你ajax.php你有一句台词:

$maxID = $_GET['next_max_id'];

这不符合您的通话如上所述,当你有一个max_id。似乎你混合了一些next/max/id。如果你查看你的代码并清理这些ID,它应该可以工作。

+0

你能告诉更多详细请该怎么办?我试图将max_id从maxid更改为nextid。你是什​​么意思“当你用你定义的max_id替换这些事件......”? – nuttelko

+1

你在这两个源中有'maxid','nextid','max_id'和'next_max_id'。这只是一个猜测,但可能这些名字意味着所有相同的事情。你应该知道,因为这是你的代码。 *如果*这些是相同的,则可以用'max_id'替换它们全部。作为一个经验法则:如果你使用某种东西,在任何地方都要给它一个名字,否则你或你的同事迟早会感到困惑。 –

0

它看起来像

.data('nextid'); 

是不会在你的DOM中存在一个不小心的错误。除非它在别的地方,你还没有发布。

您的意思是有

.data('maxid'); 

+0

尝试 - 相同的结果 – nuttelko

+0

好吧,这当然是你的代码中的问题。它可能只是少数或许多其中之一。现在,在您设置好之后立即将maxid的值记录到控制台(或使用警报)。如果它是未定义的,那么你的选择器什么都没有,你需要看看你的HTML。您应该发布生成的HTML,而不是创建它的服务器代码。 – Tony

+0

我也会检查在Ajax调用中进入你的成功处理程序的数据。这可能表明你的错误在服务器端。 – Tony

0

您需要通过event参数点击 并从event.target获取data
改变第一线代码到该:

$('#more').click(function(event) { 
var max_id = $(event.target).data('nextid'); 
+0

刚刚尝试过,但没有帮助 – nuttelko