使用ajax函数将PHP请求从第一页发送到第二页

时间:2014-05-28 21:43:35

标签: php jquery ajax instagram

我正在尝试设置我的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';

}

?>

3 个答案:

答案 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查找picuserId放在照片上的其他地方可能会更好,除非每张照片都不同。

就响应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';

}

?>

现在应该可以正常工作