我最近一直在关注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>
任何想法为什么?
答案 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,则跨域工作。