2

我最近一直在查看 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>

任何想法为什么?

4

1 回答 1

1

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

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

你可以在这里测试一下如果没有参数(jQuery 替换) ,callback=?它会尝试创建一个 XmlHttpRequest 来获取 JSON 数据......这被同源策略阻止。

通过添加参数(如果服务器支持它,并且它在这里支持),您可以$.getJSON()改用JSONP,它以完全不同的方式工作,通过创建一个<script>标签......如果响应有效,它可以跨域工作JavaScript。

于 2010-11-27T19:57:04.260 回答