0

我正在使用 facebook API 获取用户电影,如下所示:

function CallAfterLogin(data,callback){
        FB.login(function(response) {  //---
        if (response.status === "connected")
        {
            LodingAnimate(); 
            FB.api('/me?fields=movies,email', function(mydata) {
            console.log(mydata);
              if(mydata.email == null)
              {
                 alert("You must allow us to access your email id!");
                 ResetAnimate();
              }else {
                      callback(data); // <=== Trigger the callback
            } ....

并使用 ajax 将其发送为:

function AjaxResponse()
 {
    var mydata;
    CallAfterLogin(mydata, function(send) {
        var myData = 'connect=1'; 
        $.ajax({
        type: "POST",
        url: "process_facebook2.php",
        data: {
                   connect: 1,
                   myd: mydata      //
                  }
                  }).done(function(result) {
                        $("#fb-root").html(result);
                .....

获得的数据是数组形式。我试图以myd这种方式获取:

$s=$_POST['myd'];
echo $s['id']`;

或者 echo $s

这给出了错误Undefined index

以前我可以通过这种方式得到它:

$user_interest = $facebook->api('/me/movies');echo '<pre>';
            foreach ($user_interest['data'] as $var)
        {
             $ID=$var['id'];
             $Name=$var['name'];
             echo '<br/>';
             print_r($Name); echo '<br/>';
             print_r($ID);
        }

但由于一些问题,现在我在初始代码中使用 ajax 发送。

有些人请帮助我得到它。

完整代码:

<?php
session_start();
$appId = '669340023079549'; 
$appSecret = '390c04c60d19f38e113ea44f268aca44'; // Facebook App Secret
$return_url = 'dev01.dev/FB/facebook-php-sdk/examples/';  //path to script folder
//$fbPermissions = 'publish_stream,email'; //more permissions : https://developers.facebook.com/docs/authentication/permissions/
?>
<!DOCTYPE html>
<html xmlns:fb="http://www.facebook.com/2008/fbml" xml:lang="en-gb" lang="en-gb" ><head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<title>JS/Ajax Facebook Connect</title>
 <script>
 function AjaxResponse()
 {
    var mydata;
    CallAfterLogin(mydata, function(send) {
    alert(mydata);
        var myData = 'connect=1'; 
        $.ajax({
        type: "POST",
        url: "process_facebook2.php",
        data: mydata 
        }).done(function(result) {
                        $("#fb-root").html(result);
                     });
               });
  } 
function LodingAnimate() //Show loading Image
{
    $("#LoginButton").hide(); //hide login button once user authorize the application
}
 </script></head><body>
<?php
if(!isset($_SESSION['logged_in']))
{
?>
    <div id="results">    </div>
    <div class="results1">    </div>
    <div id="LoginButton">
    <button type="button" onclick="AjaxResponse()" src="fb.png" stype="height:100 width:100"></button> 
    </div>
<?php
}
?>
<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({
    appId: '<?php echo $appId; ?>',
    cookie: true,
    xfbml: true,
    channelUrl: '<?php echo $return_url; ?>channel.php',
    oauth: true});};

(function() {
    var e = document.createElement('script');
    e.async = true;
    e.src = document.location.protocol +'//connect.facebook.net/en_US/all.js';
    document.getElementById('fb-root').appendChild(e);}());
function CallAfterLogin(data,callback){
        FB.login(function(response) {  //---
        if (response.status === "connected")
        {
            LodingAnimate(); 
            FB.api('/me?fields=movies,email', function(mydata) {
            console.log(mydata);
              if(mydata.email == null)
              {
                 alert("You must allow us to access your email id!");
                 ResetAnimate();
              }

              else 
        {
            var json = JSON.stringify(mydata.movies.data);
            var a = JSON.parse(json);

            $.post('process_facebook2.php',{'myd':a}, function(data) 
            {
           //   alert(data);      
            });
        }

              }); //--
         } //if
             }); //---
          } //main function
</script>
</body>
</html> 

process_facebook.php:

<?php
echo "hi";
foreach($_POST['myd'] as $elem){
  echo $elem['name'];
  echo $elem['id'];
  echo '<br/>';
}
?>
4

1 回答 1

1

试试这个-

javascript

if(mydata.email == null)
{
    alert("You must allow us to access your email id!");
    ResetAnimate();
}
else 
{
    var json = JSON.stringify(mydata.movies.data);
    var a = JSON.parse(json);

    $.post('process_facebook2.php',{'myd':a}, function(data) 
    {
      alert(data);      
    });
}

process_facebook2.php

foreach($_POST['myd'] as $elem){
  echo $elem['name'];
}
于 2013-08-12T10:21:27.053 回答