如何从Tumblr API(JSON)中提取数据?

时间:2013-01-25 02:44:09

标签: json api get tumblr

我已经设置了Tumblr帐户并注册了我的应用程序以对其进行身份验证。

Tumblr文档:http://www.tumblr.com/docs/en/api/v2

我理解API输出JSON如下:

{
   "meta": {
      "status": 200,
      "msg": "OK"
   },
   "response": {
      "blog": {
         "title": "David's Log",
         "posts": 3456,
         "name": "david",
         "url": "http:\/\/david.tumblr.com\/",
         "updated": 1308953007,
         "description": "<p><strong>Mr. Karp<\/strong> is tall and skinny, with
            unflinching blue eyes a mop of brown hair.\r\n
         "ask": true,
         "ask_anon": false,
         "likes": 12345
      }
   }
}

很好,但文档到此结束。我不知道如何获取此信息并将其显示在我的网站上。

我认为你会得到它的方式如下:

$.ajax({
    url: "http://api.tumblr.com/v2/blog/myblog.tumblr.com/info?api-key=myapikey",
    dataType: 'jsonp',
    success: function(results){
        console.log(results);
    }
});

但这没有任何作用。

任何人都可以帮助我吗?感谢

3 个答案:

答案 0 :(得分:8)

results现在是可用于引用JSON结构的对象。当您控制结果对象时,它应该出现在Javascript开发者控制台中,您可以在其中浏览对象树。

响应对象

因此,当您的成功回调收到回复时,您应该可以使用以下内容:

results.meta.status =&gt; 200

results.meta.msg =&gt; “OK”

results.response.title =&gt; “大卫的日志”

results.response.posts =&gt; 3456

results.response.name =&gt; “大卫”

results.response.url =&gt; “http://david.tumblr.com/

results.response.updated =&gt; 1308953007

results.response.description =&gt; “<p><strong>Mr. Karp</strong>..

results.response.ask =&gt;真

results.response.ask_anon =&gt;假

results.response.likes =&gt; 12345


写入页面

如果您确实希望看到写入页面的内容,则需要使用修改DOM的函数,例如document.write,或者,因为您使用的是Jquery,$(“#myDivId”)。html (results.response.title);

试试这个:

  • 在页面的某处添加<div id="myDivId"></div>,然后
  • 在成功回调函数中添加$("#myDivId").html(results.response.title);

$.ajax({
    url: "http://api.tumblr.com/v2/blog/myblog.tumblr.com/info?api_key=myapikey",
    dataType: 'jsonp',
    success: function(results){
        // Logs to your javascript console.
        console.log(results); 
        // writes the title to a div with the Id "myDivId" (ie. <div id="myDivId"></div>)
        $("#myDivId").html(results.response.title); 
    }
});

答案 1 :(得分:1)

在问题代码中,请求类型未被设置,并且被tumblr拒绝。 jsonp错误响应是打印出来的。下面的代码正确地生成了jsonp请求。

关键是指定类型和dataType。祝你好运快乐的黑客。 ; - )

$.ajax({
    type:'GET',
    url: "http://api.tumblr.com/v2/blog/jdavidnet.tumblr.com/info",
    dataType:'jsonp',
    data: {
        api_key : "myapikey"
    },
    success:function(response){
        console.log(response, arguments);
    }
 });

答案 2 :(得分:0)

将对象写入屏幕的一种方法是将包含其JSON表示的元素添加到页面中:

$.ajax({
    url: "http://api.tumblr.com/v2/blog/myblog.tumblr.com/info?api-key=myapikey",
    dataType: 'jsonp',
    success: function(results){
        $("body").append(
            $("<pre/>").text(JSON.stringify(results, null, "    "))
        );
    }
});

以下是演示:http://jsfiddle.net/MZR2Z/1/