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.