使用豆瓣API显示图书列表

2008年01月22日 | 3,937 次浏览 | 标签: , | 2条评论  

你可以使用豆瓣提供的豆瓣秀代码生成器把新收藏自动显在blog上,豆瓣开放了API以后,你还可以根据API自己写一个。下面就是一个简单的示例(效果可以看本站的页尾部分),其中douban.params是请求的参数列表,cat是显示类别,比如书籍book或者电影movie等,start-index是开始的索引,max-results是返回的最大结果,alt是请求返回类型(默认为xml,还可以是json或者xd),apikey是你在豆瓣申请的apikey,最后的callback是回调函数,其他的参数可以看豆瓣API参考手册。因为本例是使用JSONP的方式处理返回的JSON数据,根据豆瓣的规定,这里alt的值应该是xd。parseEntry和render是主要的两个函数,前者分析返回的JSON数据,后者控制数据在页面中的显示。如果你想自己动手写一个玩玩,这是示例也是个不错的开始。

function $(el){ return document.getElementById(el);}
var douban = {
	baseUrl:'http://api.douban.com/people/nkuer/collection',
	params:{
		cat:'book',
		'start-index':1,
		'max-results':50,
		alt:'xd',
		apikey:'*******',
		callback:'douban.appendHTML'
	},
	magicBox:'douban',
	buildUrl:function(){
		var ps = this.params,string='';
		for(var i in ps)
			string += i + '='+ ps[i]+ '&';
		return this.baseUrl+"?"+string;
	},
	appendRequestScript:function(url){
		var head = document.getElementsByTagName("head")[0];
		var script = document.createElement("script");
		script.src = url;
		script.charset = 'utf-8';
		head.appendChild(script);
	},
	appendHTML:function(json){
		$(this.magicBox).innerHTML = this.render(this.parseJSON(json));
	},
	parseJSON:function(json){
		var itemCollection=[];
		for(var i in json.entry)
			itemCollection.push(this.parseEntry(json.entry[i]));
		return itemCollection;
	},
	parseEntry:function(entry){
		var linkItem = {};
		var linkEntry  = entry["db:subject"]["link"];
		linkItem.title = entry["db:subject"]["title"]["$t"];
		linkItem.src = 'http://panweizeng.com/images/douban-no-image.jpg';
		for(var i in linkEntry){
			if(linkEntry[i]['@rel'] == 'image')
				linkItem.src = linkEntry[i]['@href'];
			if(linkEntry[i]['@rel'] == 'alternate')
				linkItem.link = linkEntry[i]['@href'];
		}
		return linkItem;
	},
	render:function(itemCollection){...},
	init:function(){
		this.appendRequestScript(this.buildUrl());
	}
}
douban.init();

完整示例地址:http://panweizeng.com/others/example/douban_book_list.html

相关文章

评论(2)

  1. paoe 发表于2008年01月22日 3:09 pm

    很好!很强大!

  2. 化妆品 发表于2008年02月19日 2:57 pm

    写的很详细哦!
    可以到乐偶网 http://www.leall.com 发表一下,让更多人知道。

发表评论

最受欢迎

评论最多