9

我已经设置了一个 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);
    }
});

但这无济于事。

谁能帮我吗?谢谢

4

3 回答 3

8

results现在是您可以用来引用 JSON 结构的对象。当您 console.log 结果对象时,它应该出现在 Javascript 开发人员控制台中,您可以在其中探索对象树。

响应对象

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

results.meta.status=> 200

results.meta.msg=> “好的”

results.response.title=> “大卫的日志”

results.response.posts=> 3456

results.response.name=> “大卫”

results.response.url=>“ http://david.tumblr.com/

results.response.updated=> 1308953007

results.response.description=> " <p><strong>Mr. Karp</strong>.."

results.response.ask=> 真

results.response.ask_anon=> 假的

results.response.likes=> 12345


写入页面

如果您真的想看到写入页面的内容,则需要使用修改 DOM 的函数,例如 document.write,或者,由于您使用的是 Jquery,$("#myDivId").html(results.write)响应。标题);

试试这个:

  • <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); 
    }
});
于 2013-01-25T02:58:11.967 回答
1

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

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

$.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);
    }
 });
于 2013-01-25T03:23:28.800 回答
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/

于 2013-01-25T03:14:56.463 回答