【发布时间】:2012-04-05 14:35:54
【问题描述】:
【问题讨论】:
【问题讨论】:
这不是 JSON,这是对 JSONP 的一种奇怪的看法。
如果您添加一个<script /> 标记并将src 设置为http://clintonbeattie.tumblr.com/bio/json,则全局变量tumblr_api_read 将指向具有响应信息的对象;
var tumblr_api_read = {
"tumblelog": {
"title": "First Title",
"description": "",
"name": "clintonbeattie",
"timezone": "US\/Eastern",
"cname": false,
"feeds": []
},
"posts": [{
"id": null,
"url": "",
"url-with-slug": "",
"type": "regular",
"date-gmt": " GMT",
"date": "Wed, 31 Dec 1969 19:00:00",
"bookmarklet": null,
"mobile": null,
"feed-item": "",
"from-feed-id": 0,
"unix-timestamp": 1333622193,
"format": "html",
"reblog-key": "TmN3ujDJ",
"slug": "",
"regular-title": "",
"regular-body": ""
}]
};
因此做这样的事情;
<script src="http://clintonbeattie.tumblr.com/bio/json"></script>
<script>
// Use tumblr_api_read.
alert(tumblr_api_read.tumblelog.title); // Shows "First Title"
for (var i=0;i<tumblr_api_read.posts.length;i++) {
var thisPost = tumblr_api_read.posts[i];
alert("This post was created at " + thisPost.date);
}
</script>
【讨论】:
来自他们的API docs:
JSON 输出
通过在调用读取 API 时使用 /api/read/json 而不是 /api/read,输出将作为 JSON 发送,并分配给名为 tumblr_api_read 的 Javascript 变量。
那不是 JSON,甚至不是JSONP。他们正在返回文字 JavaScript。因此,您必须遵循他们的文档并执行以下操作:
<script type="text/javascript" src="http://clintonbeattie.tumblr.com/api/read/json"></script>
这将创建一个名为tumblr_api_read(即window.tumblr_api_read)的全局变量,它是一个对象字面量。
由于您使用的是 jQuery,您可以执行以下操作:
$.getScript("http://clintonbeattie.tumblr.com/api/read/json", function(script, textStatus, jqXHR) {
console.log(window.tumblr_api_read.tumblelog.title);
});
这些人可以在他们的文档中链接到json.org,这让我很惊讶,但把事情搞砸了。
【讨论】: