我正在尝试设置我的Instagram API网站,以便用户可以点击照片并“喜欢”它们。我有一个like.php将这个'like'信息发送给API。我希望能够点击图片,发送一个调用like.php的ajax响应,让like.php做它的事情,如果事情进展顺利,发回“ok”。
我现在遇到一个问题,甚至让这个ajax调用like.php正确运行。大多数情况下,我的页面甚至不会加载,也不会在控制台中提供任何错误信息。
这是我的代码:
图片上的:
echo "<img src='like.jpg' class='like' onclick='likePic(".$picId.",".$userId.")'>"
main.php中的函数
function likePic(picId, userId){
$.get('path/to/like.php?picid=' + picId + '&userid=' + userId+ "&r=" + (new Date().getTime()), function(data) {
if (data != "ok") {
}
}
}
最后,喜欢.php
<?php
require 'instagram.class.php';
$instagram = new Instagram(array(
'apiKey' => '******************',
'apiSecret' => '******************',
'apiCallback' => '*******************'
));
$token = userId;
$instagram->setAccessToken($token);
$id = $_GET['pic'];
$instagram->likeMedia($id);
if ($result->meta->code === 200) {
echo 'Success! The image was added to your likes.';
} else {
echo 'Something went wrong';
}
?>
答案 0 :(得分:2)
前端PHP / HTML / JS:
<img src="" alt="" data-pic-id="<?php echo $picId; ?>" data-user-id="<?php echo $userId; ?>">
<script>
// listens for a click event on all <img> elements
$('img').click(onImageClicked);
// the function to handle the click event
function onImageClicked() {
var picId = $(this).attr('data-pic-id');
var userId = $(this).attr('data-user-id');
$.get('path/to/like.php?pic=' + picId + '&userid=' + userId+ "&r=" + (new Date().getTime()), function(data) {
if (data != "ok") {
// failed
}
});
}
</script>
like.php:
<?php
$id = (isset($_GET['pic'])) ? $_GET['pic'] : null;
if ($id)
{
// do instagram stuff
// initialize $result;
}
if (empty($result) || $result->meta->code !== 200)
{
echo 'error';
}
else
{
echo 'ok';
}
请注意,在您的示例中,JS发送picid
,但PHP查找pic
将userId
放在照片上的其他地方可能会更好,除非每张照片都不同。
就响应AJAX调用而言,我更喜欢使用JSON,但这取决于你。
答案 1 :(得分:1)
在您的main.php文件中,给出的回复是Success! The image was added to your likes.
或Something went wrong
但是,您的likePic
函数会将返回的文本与ok
进行比较,而这些文本永远不会成立。
至于调试页面加载和AJAX问题,不要指望一切都神奇地出现在控制台中。有时最好包含console.log()
调用,这样您就可以看到实际采用的代码路径以及传递的数据。
最后,检查您的PHP错误日志也是明智之举,以确保您的设置的所有部分(包括后端)都按预期运行。
答案 2 :(得分:0)
<?php
require 'instagram.class.php';
$instagram = new Instagram(array(
'apiKey' => '******************',
'apiSecret' => '******************',
'apiCallback' => '*******************'
));
$token = 'add your token'; // place a valid token here
$instagram->setAccessToken($token);
$id = $_GET['pic'];
$instagram->likeMedia($id);
if ($result->meta->code === 200) {
echo 'ok';
} else {
echo 'Something went wrong';
}
?>
现在应该可以正常工作