Google Buzz API возвращает ноль через JQuery?

Я смотрел API Google Buzz совсем недавно и подумал, что это будет похоже на API Twitter для запросов - и документация выглядит примерно так. Хотя, похоже, нет, и я чешу голову, пытаясь понять, чего мне не хватает...

Например, если вы добавите следующий URL в браузер;

http://www.googleapis.com/buzz/v1/people/jonathan.beckett/@groups/@followers?alt=json

Возвращает ожидаемые данные. Однако если вы запускаете довольно простой код JQuery по тому же URL-адресу (как указано ниже), он возвращает null.

<html>
<head>
    <title>Buzz Wall of Awesome</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" language="javascript"></script>
</head>
<body>
    <div>Buzz ID <input type="text" id="buzz_id" value="jonathan.beckett" /> <button id="following_button">Following</button> <button id="followers_button">Followers</button></div>
    <div id="results"></div>
    <script language="Javascript">
        $(document).ready(function(){
         var url = "http://www.googleapis.com/buzz/v1/people/jonathan.beckett/@groups/@followers?alt=json";
         $.getJSON(url,{}, function(data) { alert(data); });
        });
    </script>
</body>
</html>

Есть идеи почему?

1 ответ

Вы должны вызвать JSONP-поведение здесь, добавив &callback=? на URL, как это:

 var url = "http://www.googleapis.com/buzz/v1/people/jonathan.beckett/@groups/@followers?alt=json&callback=?";

Вы можете проверить это здесь. Без callback=? Параметр (который заменяет jQuery) пытается создать XmlHttpRequest для получения данных JSON... и это блокируется той же политикой происхождения.

Добавляя параметр (если сервер поддерживает его, и он делает это здесь), вы получаете $.getJSON() вместо этого использовать JSONP, который работает совершенно по-другому, создав <script> тег... который работает междоменный, если ответ правильный JavaScript.

Другие вопросы по тегам