我最近一直在研究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>你知道为什么吗?
发布于 2010-11-28 03:57:04
您需要在此处调用JSONP行为,cu将&callback=?添加到URL,如下所示:
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 data...and,这会被same origin policy阻止。
通过添加参数(如果服务器支持它,这里就支持它),您将使$.getJSON()使用JSONP,这是一种完全不同的工作方式,方法是创建一个<script>标记...如果响应是有效的JavaScript,则它可以跨域工作。
https://stackoverflow.com/questions/4293557
复制相似问题