【问题标题】:Sending a PHP request from first page to second using ajax function使用ajax函数将PHP请求从第一页发送到第二页
【发布时间】:2014-05-28 21:43:34
【问题描述】:

我正在尝试设置我的 Instagram API 网站,以便用户可以点击照片并“喜欢”它们。我有一个 like.php 可以将此“喜欢”信息发送到 API。我希望能够单击图像,发送一个调用 like.php 的 ajax 响应,让 like.php 做它的事情,如果一切顺利,发回一个“ok”。

我现在遇到了一个问题,即使让这个对 like.php 的 ajax 调用正常运行。大多数时候,我的页面甚至不会加载,也不会在控制台中提供任何错误信息。

这是我的代码:

在图片上:

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") {    
   }
  }
 }

最后,like.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';

}

?>

【问题讨论】:

  • 这看起来很可疑:$token = ;
  • @MikeW - 我很确定这是审查敏感信息。 @BrandN00b - 您的 like.php 页面返回 Success!Something went wrong 但您的 main.php 期待 ok
  • @GigaWatt 我也是,但这里有一些问题的质量,一切皆有可能。
  • 如果您使用 jQuery,请不要使用内联 JavaScript 侦听器。
  • 您是否使用 Chrome 开发者工具之类的工具来跟踪您的 AJAX 请求和响应?

标签: php jquery ajax instagram


【解决方案1】:

前端 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,但这取决于你。

【讨论】:

  • 我收到此错误:注意:未定义变量:第 168 行 /././main.php 中的 picId。userId 也一样
【解决方案2】:

在您的 main.php 文件中,给出的响应是 Success! The image was added to your likes.Something went wrong
但是,您的 likePic 函数会将返回的文本与 ok 进行比较,这永远不会是真的。

至于调试您的页面加载和 AJAX 问题,不要指望一切都会神奇地出现在控制台中。有时最好包含console.log() 调用,这样您就可以看到实际采用了哪些代码路径以及正在传递哪些数据。

最后,明智的做法是检查您的 PHP 错误日志,以确保设置的所有部分(包括后端)都按预期运行。

【讨论】:

  • 我还没有真正做到这一点。是的,你是对的,但我猜我还没有调用 like.php。
【解决方案3】:
<?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';

}

?>

现在应该可以正常工作了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 2019-11-26
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    相关资源
    最近更新 更多