2013-08-12 11 views
0

Я получаю пользователей фильмы с помощью facebook API, как показано ниже:Получение значения массива из результата лицо 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/>'; 
} 
?> 
+1

Вы получаете ожидаемое значение 'mydata' внутри функции' AjaxResponse'? –

+0

@Shadowfax: Нет. Я точно не знаю, посылает ли я 'callback (data):' или 'callback (mydata); ', но оба из них дают неопределенные значения в AjaxResponse() – user123

+0

@Shadowfax: Нет. Я точно не знаю, посылаю ли я запрос обратного вызова (данных); или callback (mydata); ', но оба они дают неопределенные значения в' AjaxResponse() ' – user123

ответ

1

Попробуйте this-

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']; 
} 
+0

Спасибо большое! он предупреждает 'привет
Предупреждение: json_decode() ожидает параметр 1, чтобы быть строка, массив приведены в /opt/lampp/htdocs/FB/facebook-php-sdk/examples/process_facebook2.php на линии

Примечание: Попытка получить имущество не-объект в /opt/lampp/htdocs/FB/facebook-php-sdk/examples/process_facebook2.php на линии
'и дает 'Примечание: Неопределенный индекс: myd in/opt/lampp/htdocs/FB/facebook-php-sdk/examples/process_facebook2.php в строке 6' в браузере – user123

+0

Нажатие кнопки следует продолжать вызов ajaxResponse() или CallAfterLogin()? – user123

+0

Какая кнопка ...? –

Смежные вопросы