Zac*_*ier 1 api ajax jsonp tumblr httpcontent
我试图使用我在不同网页上编写的脚本从我的Tumblr博客中复制所有实际内容,但是我在获取内容时遇到了一些麻烦.我的ajax电话如下:
$.ajax({
url: "http://solacingsavant.tumblr.com/",
dataType: 'jsonp',
success: function(data) {
var elements = $("<div>").html(data)[0].getElementsByTagName("ul")[0].getElementsByTagName("li");
for(var i = 0; i < elements.length; i++) {
var theText = elements[i].firstChild.nodeValue;
alert(theText); // Alert if I got something
// This is where I'll strip the data for the items I want
}
}
});
Run Code Online (Sandbox Code Playgroud)
但因为它是控制台给我一个错误"资源解释为脚本,但转移与MIME类型text/html",我在这里查看并更改meta我的博客的HTML 相应的标签,但<meta http-equiv="Content-Type" content="application/javascript; charset=utf-8" />没有成功
我也尝试过使用dataType: 'html'(这对我来说更有意义)但是我收到了一个控制台错误"来自Access-Control-Allow-Origin不允许来源" ,我也调查过并向我的Tumblr博客添加了一个元标记<meta Access-Control-Allow-Origin="*" />,但又没有成功
我的方法不起作用,因为Tumblr作为一个整体不允许更改Access-Control吗?如果是这样,我该如何解决这个问题呢?如果没有,我做错了什么?
主要编辑(基于mikedidthis的有用评论)
似乎没有Tubmlr API我无法做到这一点,所以我获得了一个API密钥,现在可以访问API发出的json结果.我能够在控制台中使用API密钥获取jsonp对象.我的javascript目前:
$.ajax({
url: "http://api.tumblr.com/v2/blog/solacingsavant.tumblr.com/info?api_key=APIkeyGoesHeRe",
dataType: 'jsonp',
success: function(results){
console.log(results);
// Get data from posts here
}
});
Run Code Online (Sandbox Code Playgroud)
这篇SO帖子有助于理解我如何从源代码更改我的Tubmlr页面上的数据,并找到有关该站点的基本信息,而不是如何从各个帖子获取实际数据.我尝试查看results对象并且无法找到与帖子相关的任何数据,也无法将结果附加到jsfiddle.所以我现在的问题是,"我可以使用这种方法从个别帖子中复制数据(比如帖子中的书面文字)吗?如果是这样,怎么样?如果不是,我应该使用其他什么方法?"
tumblr API文档确实涵盖了使用API,但是,为了给你一点开始,让我们抓住你所有的文本帖子.
首先,您需要查询任何Text类型的帖子的API .
文档声明(http://www.tumblr.com/docs/en/api/v2#posts)我们应该使用以下URL并指定我们将设置的类型text:
api.tumblr.com/v2/blog/solacingsavant.tumblr.com/posts[/type]
Run Code Online (Sandbox Code Playgroud)
下面是一个基于OP小提琴的例子.
$.ajax({
url: "http://api.tumblr.com/v2/blog/solacingsavant.tumblr.com/posts/text?api_key=XXXXXXX",
dataType: 'jsonp',
success: function(data){
posts = data.response.posts
$.each(posts, function(i) {
console.log( posts[i].title, posts[i].body )
});
}
});
Run Code Online (Sandbox Code Playgroud)
因此,对于API的每个查询,我们将收到一个对象.您需要过滤此对象以从中获取所需的数据.
在帖子查询的上下文中,您可以使用data.response.posts对象直接访问您的帖子.
要查找每种帖子类型可用的数据,请参阅文档:http://www.tumblr.com/docs/en/api/v2#text-posts
对于每个Text帖子类型的内容,您需要遍历该posts对象,然后获取名为title和的键的值body.
奖励时间
通过type从URL中删除,可以获取所有类型的帖子:
http://api.tumblr.com/v2/blog/solacingsavant.tumblr.com/posts/?api_key=XXXXXXX "
请记住,这是一个非常快速的例子,而不适用于现实世界.
| 归档时间: |
|
| 查看次数: |
1587 次 |
| 最近记录: |