2012-10-31 29 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