看明白了。。
var data=fetchJSON(start,$("#autofetch").val());
var attr=data['db:attribute'];
这个地方。。fetchJSON根本没有返回任何数据给data啊……当然是undefined了
function fetchJSON(start,keyword){
$.getJSON("http://api.douban.com/movie/subjects?alt=xd&callback=?&start-index="+start+"&max-results=1&q="+$("#autofetch").val(),function(data){
var id=data.entry[0].id['$t'];
$.getJSON(id+"?alt=xd&callback=?", function(data){
console.log(data);
return data;
这个return,只是return了一些数据给目前所在的这个小function,但实际上根本没人在意这个function的return值。。
})
})
// where is return?
}
基本上,应该是把
var attr=data['db:attribute'];
及以后的代码,直接放在最里头的那个function里头。。
再来清理一下思路,按照时间顺序,发生了下面的事儿:
1. var data=fetchJSON(start,$("#autofetch").val());
发出了一些异步请求,然后没事儿了。
2. var attr=data['db:attribute'];
因为上面是异步请求,所以立刻就执行到下面这句了,然后发生了undefined的问题
过了不知道多久之后。。
3. fetchJSON里头的第一个异步请求完成,callback函数被执行了
4. 这个callback 函数里头又发出了新的异步请求
又过了不知道多久。。
5. 另外一个callback函数被执行了,return了一堆数据给不知道谁,没人理会那些数据了。。
【 在 yegle (一阁@bobopopo是大牛) 的大作中提到: 】
: 冒死上个附件……
: 代码很乱别笑话……
--
FROM 61.135.255.*