Google Buzz API通过JQuery返回Null?

时间:2010-11-27 19:49:22

标签: jquery json jsonp google-buzz

我最近一直在关注Google Buzz API,并认为它类似于要查询的Twitter API - 文档几乎就是这样的。看起来并不是这样,我正在试图找出我所缺少的东西......

例如,如果您在浏览器中抛出以下URL;

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

返回预期数据。但是,如果您在同一个URL(如下所列)上运行一些相当简单的JQuery代码,则返回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 个答案:

答案 0 :(得分:1)

您需要在此处调用JSONP行为,将&callback=?添加到网址中,如下所示:

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

You can test it out here没有 callback=?参数(jQuery替换),它试图创建一个XmlHttpRequest来获取JSON数据......这被same origin policy阻止。

通过添加参数(,如果服务器支持它,并且它在此处执行),您将$.getJSON()使用JSONP代替,这在完全不同的情况下有效方式,通过创建<script>标记...如果响应是有效的JavaScript,则跨域工作。