Работа с Facebook JSON с помощью AJAX

#json #facebook #jquery

#json #Facebook #jquery

Вопрос:

Я пытаюсь получить подробную информацию о событии facebook, для которого пользователь вводит URL.

По сути, пользователь вводит URL для события, например. https://www.facebook.com/event.php?eid=102036779889416 Тогда результирующая информация в формате JSON будет присвоена переменным и передана в соответствующие значения формы, это просто функция автоматического заполнения, чтобы упростить работу на моем сайте.

Теперь у меня есть форма для передачи URL-адреса в файл, я использую getjson

 $.getJSON("getevent.php?event=" event,function(data)
  

Но я не знаю, что делать с возвратом, поскольку в примере, который я привел, json отформатирован как таковой:

 {"posts": 
[
{ 
"title":"9lessons | Programming Blog", 
"url":"http://9lessons.blogspot.com" 
}, 
{ 
"title":"jQuery and Ajax Demos Pard - 3", 
"url":"jquery-and-ajax-best-demos-part-3.html"
}, 
]
}
  

И может быть выведен, когда он возвращается, используя это:

 <script type="text/javascript">
$(function() 
{
$(document).ready(function()
{
$.getJSON("data.js",function(data)
{
$.each(data.posts, function(i,data)
{
var div_data =
"<div ><a href='" data.url "'>" data.title "</a></div>";
$(div_data).appendTo("#9lessonsLinks");
});
}
);
return false;
});
});
</script>
  

Однако Facebook вернул JSON, который выглядит следующим образом;

 {
   "id": "188892631122084",
   "owner": {
      "name": "Gerard Alonso",
      "id": "742700474"
   },
   "name": "M.E.T.H.O.D. 11.6.2011",
   "description": "Yo! nnOld skool hip hop and other assorted jams at the Bodega. nnAll day jam with barbecue by Homemade, graffiti by Montana, Nottingham's best hip hop DJs and good vibes all round.nnu00a33 entry all day and night, separate u00a35 charge for Don't Flop rap battles upstairs http://www.facebook.com/event.php?eid=165044166891331.nnnDJs line-up:nnTHE ELEMENTZnSQUIGZnBEATMASTER BILLnSYNICnROOT ONEnILLICIT amp; DESCRYnADAM Pn  morennnDuring the day:nn- Dont Flop rap battles upstairs (not included on the u00a33 ticket price)n- Mimm store >> http://tinyurl.com/3n8qltcn- Jamaican BBQ (Homemade)n- Funk and sunny hip hop in the downstairs barnnIn the evening:nn- Old skool hip hop music upstairs along with plenty of mc's getting up in the micn- Drinks deals TBCn- BBQ all day and nightnnnAny Mc's, dj's, breakers, graffiti artist  get in touch. nnPeace, love and hip hop.",
   "start_time": "2011-06-11T14:00:00",
   "end_time": "2011-06-12T03:30:00",
   "location": "The Bodega Social",
   "privacy": "OPEN",
   "updated_time": "2011-06-05T21:45:18 0000"
}
  

И, как вы можете видеть, у него нет верхнего уровня, эквивалентного ‘posts’, который я могу использовать, поэтому я немного озадачен. Также я не уверен, как вывести это в файл, поскольку у меня есть это в php-файле, на который передается URL:

 $url = $_GET['event'];

parse_str( parse_url( $url, PHP_URL_QUERY ) );
$id = $eid;


$url = 'https://graph.facebook.com/'.$id;

$json = file_get_contents($url,0,null,null);
$json_output = json_encode($json, false);


print_r($json_output);
  

Что в любом случае кажется неправильным, поскольку выходные данные заполнены обратными косыми чертами перед каждой цитатой

Я знаю, что это довольно просто, но я просто не могу в этом разобраться. Что я хочу сделать, так это присвоить каждой категории переменную, чтобы что-то с ней сделать, но сейчас я просто соглашусь сначала вывести ее. Я нахожу AJAX таким сложным, потому что, похоже, существует около 10 способов сделать то же самое.

Редактировать: Я понял, что мне не нужен JSONdecode, и просто повторил $ json. Firebug видит, что JSON генерируется нормально, но ничего не происходит после добавления этого в AJAX:

 $.getJSON("getevent.php?event=" event,function(data)
{
var items = [];

  $.each(data, function(key, val) {
    items.push('<li id="'   key   '">'   val   '</li>');
  });

  $('<ul/>', {
    'class': 'my-new-list',
    html: items.join('')
  }).appendTo('#arrData');
}
);
return false;
  

Итак, я даже не знаю, что я пытаюсь исправить сейчас, насколько я могу понять, я сделал то, что говорит мне руководство, и JSON правильный?

Спасибо

Ответ №1:

Я думаю, что JSON, который вы пытаетесь использовать, предназначен для списка сообщений. Второй фрагмент JSON выглядит как правильный (т. Е. объект события).

Комментарии:

1. Нет, я думаю, вы неправильно поняли. Первый из них используется в примере, который я привожу ниже. Второй json — это тот, который я хочу использовать. Я знаю, что это правильный вариант, я просто не знаю, как его использовать.

2. Это должно работать нормально. Я попробовал извлечь JSON из вашего кода JavaScript, и он действительно отображает все свойства события в виде списка. Проверили ли вы значение, полученное getJSON, например, window. оповещение (данные)?

3. Я получаю [object Object] в окне предупреждения?

4. Он просто случайно начал работать, я не знаю, что я изменил, но теперь он отлично выводится. Спасибо