json - tumblr developers
¿Cómo extraer datos de la API de Tumblr(JSON)? (3)
Configuré una cuenta de Tumblr y registré mi aplicación para autenticarla.
Documentación de Tumblr: http://www.tumblr.com/docs/en/api/v2
Entiendo que la API genera JSON de la siguiente manera:
{
"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
}
}
}
Eso está bien, pero la documentación termina ahí. No tengo idea de cómo obtener esta información y mostrarla en mi sitio.
Pensé que la forma en que lo obtendrías sería algo así como:
$.ajax({
url: "http://api.tumblr.com/v2/blog/myblog.tumblr.com/info?api-key=myapikey",
dataType: ''jsonp'',
success: function(results){
console.log(results);
}
});
Pero esto no hace nada.
¿Puede alguien ayudarme? Gracias
En el código de la pregunta, el tipo de solicitud no se estaba configurando y tumblr lo estaba rechazando. La respuesta de error de jsonp fue la impresión. El código siguiente hace correctamente la solicitud jsonp.
La clave era especificar el tipo y el tipo de datos. Buena Suerte feliz piratería. ;-)
$.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);
}
});
Una forma de escribir un objeto en la pantalla es agregar un elemento que contenga su representación JSON a la página:
$.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, " "))
);
}
});
Aquí hay una demostración: http://jsfiddle.net/MZR2Z/1/
results
es ahora el objeto que puede usar para hacer referencia a la estructura JSON. Cuando console.log el objeto de resultados, debe aparecer en la consola del desarrollador de Javascript donde puede explorar el árbol de objetos.
El objeto de respuesta
Entonces, cuando su devolución de llamada exitosa reciba la respuesta, la siguiente debe estar disponible para usted:
results.meta.status
=> 200
results.meta.msg
=> "OK"
results.response.title
=> "David''s Log"
results.response.posts
=> 3456
results.response.name
=> "david"
results.response.url
=> " http://david.tumblr.com/ "
results.response.updated
=> 1308953007
results.response.description
=> " <p><strong>Mr. Karp</strong>..
"
results.response.ask
=> true
results.response.ask_anon
=> false
results.response.likes
=> 12345
Escribiendo a la página
Si realmente desea ver algo escrito en su página, necesitará usar una función que modifique el DOM como document.write o, dado que está usando Jquery, $ ("# myDivId"). Html (results. response.title);
Prueba esto:
- Agregue
<div id="myDivId"></div>
en algún lugar de la página, y - Agregue
$("#myDivId").html(results.response.title);
en su exitosa función de devolución de llamada
$.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);
}
});