Как прочитать данные атрибутов из объекта, возвращенного из FB.api? - PullRequest
3 голосов
/ 04 июня 2011

У меня есть следующий код для реализации события, когда пользователь оставляет комментарий.Он срабатывает правильно, но проблема в том, что я понятия не имею, как разобрать объект, который передается в мою функцию обратного вызова.

<script>
    window.fbAsyncInit = function () {
        FB.init({ appId: '<myAppId>', status: true, cookie: true, xfbml: true });
        FB.Event.subscribe('comment.create', function () {
            FB.api('/comments/?ids=http://foo.com', function (response) {
                console.log(response);
            });
        });
    };
    (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);
    } ());
</script>

Глядя на консольный журнал в firebug, console.log(response) показывает этот объект:

{
    "http://foo.com": {
       "data": [
          {
             "id": "10150090820621770_15631060",
             "from": {
                "name": "Test User",
                "id": "1234455"
             },
             "message": "testing",
             "created_time": "2011-04-18T01:55:38+0000"
          },
          {
             "id": "10150090820621770_15631066",
             "from": {
                "name": "Test UserToo",
                "id": "1149043581"
             },
             "message": "testing2",
             "created_time": "2011-04-18T01:56:12+0000"
          }
       ]
    }
 }

Однако, если я пытаюсь получить доступ к объекту с помощью response.data[0].from.name, я получаю undefined возвращено.Кроме того, все последующие возвращают undefined также:

  • response.data
  • response.data.length
  • response.data[0]

Я понятия не имею, как разобрать объект для чтения атрибутов.У кого-нибудь есть советы?

Ответы [ 3 ]

2 голосов
/ 04 июня 2011

Вы забыли свое "http://foo.com" .. Так должно быть что-то вроде response["http://foo.com"].data[0].id Или response["http://foo.com"].data[0].from.name

0 голосов
/ 28 февраля 2012

Я использовал FQL для доступа к комментариям FB.

0 голосов
/ 04 июня 2011

Я думаю, что ответ является текстовым. Вам нужно получить компилятор для анализа текста в объект JavaScript. поскольку текст отформатирован как JSON, это довольно просто. в браузерах, поддерживающих JSON (на странице википедии написано: ff 3.5+, IE8 +, opera 10.5+, материалы на основе webkit), вы можете сделать следующее:

var responseObject = JSON.parse(response);

это должно дать вам нужный объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...