2010-06-29 2 views
6

Я пытаюсь использовать новый график api для facebook. Я пытаюсь получить некоторые данные, используя jquery ajax. Это образец моей коды, в очень простой ...Использование нового графика facebook api, ajax calls возвращает null (пусто)

var mUrl = 'https://graph.facebook.com/19292868552'; 
    $.ajax({ 
     url: mUrl, 
     dataType: 'json', 
     success: function(data, status) { 
      $('#test').html(data); 
      alert(data); 

     }, 
     error: function(data, e1, e2) { 
     $('#hello').html(e1); 
     } 
    }); 

URL-адреса является на страницу, которая не нуждается в токенах (попробуйте с помощью браузера), но функция успеха возвращает пустой объект или null.

Что я делаю неправильно? Спасибо за помощь!

+1

Точно мой вопрос! – digiguru

ответ

0

Вы не можете выполнять кросс-доменные запросы AJAX, подобные этому из-за same-origin policy. Вместо этого используйте Facebook JavaScript SDK, который основан на теге скрипта.

+0

Спасибо! Я попробую его –

+0

Это не связано с перекрестными линзами. Я могу видеть данные json из Facebook с помощью сетевого анализатора (wirehark) Эта тема затрагивает аналогичную проблему http://stackoverflow.com/questions/2387271/ajax-response-is-gzip-compressed-prototype-firefox- cant-handle-it Возможно, это связано с gzip, но не уверен даже в этом ... у меня есть аналогичный вызов youtube var url = "http://gdata.youtube.com/feeds/api/videos? д = "+ +" запрос & Max-результат = 30 & v = 2 & альт = jsonc & формат = 5" ; и работает, несмотря на то же кодирование gzip, что и facebook call –

+0

...после некоторого часа расследования я еще больше запутался :) , если Firefox реализует политику одного и того же происхождения, скрывая responseText, тогда это может быть (я собираюсь вернуть вам 1 балл за 24 часа) –

1

... Graph API поддерживает JSONP. Просто передайте callback = methodname в качестве дополнительного параметра, и возвращенный контент будет завернут в вызов функции, позволяющий использовать динамически вставленный тег сценария для захвата этих данных. http://forum.developers.facebook.com/viewtopic.php?pid=253084#p253084

10

Я рассмотрел это и задал этот вопрос раньше. Я сделал быстрый tutorial, который охватывает именно это, и объясняет все это.

Вкратце: JSON не предназначен для использования в разных доменах в соответствии с политикой того же происхождения. Однако работа вокруг заключается в использовании JSONP, который мы можем сделать в jQuery, используя поддерживаемый параметр обратного вызова в графике facebook api. Мы можем сделать это, добавив параметр на ваш URL, как

https://graph.facebook.com/19292868552?callback=?

с помощью обратного вызова =? jQuery автоматически изменяет? для завершения json в вызове функции, который затем позволяет jQuery правильно анализировать данные.

Также попробуйте использовать метод $ .getJSON.

+0

Я думаю, что важно отметить что API-интерфейс Facebook поддерживает JSONP, позволяя этому работать. –

3

Я пытался сделать что-то подобное, в тестировании я смог получить рабочий результат, который я сохранил на jsFiddle: http://jsfiddle.net/8R7J8/1/

Сценарий:

var facebookGraphURL = 'https://graph.facebook.com/19292868552'; 
$.ajax({ 
    url: facebookGraphURL, 
    dataType: 'json', 
    success: function(data, status) { 
     $('#output').html('Username: ' + data.username); 
    }, 
    error: function(data, e1, e2) { 
     $('#output').html(e2); 
    } 
}) 

HTML:

<html> 
    <body> 
    <div id="output">BorkBorkBork</div> 
    </body> 
</html> 

Надеюсь, что это поможет! :)

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