- 主题:问个jquery的问题
应该不是吧……都用了jsonp了,不是么……
你看有“callback”的。。
【 在 Kommit (小七 - 无房无车已婚正太) 的大作中提到: 】
: 跨域?
--
FROM 61.135.255.*
最好有大家可以直接访问到的页面。。很多时候都是一些细节导致的问题,能看到具体的页面会省去大量口舌。。
【 在 yegle (一阁@bobopopo是大牛) 的大作中提到: 】
: 不是跨域问题,因为如果我直接在getJSON里面处理data的话没有任何问题
: 在return前加了console.log,用var data=fetchJSON(1,'test');来调用函数,结果data is undefined这个信息出现早于console.log的记录,这个是啥情况?
--
FROM 61.135.255.*
看明白了。。
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.*
修改逻辑结构。。
把真正的逻辑处理的代码,放在第二个callback函数里头。。
【 在 yegle (一阁@bobopopo是大牛) 的大作中提到: 】
: 明白了……但是还是不知道怎么返回这个值给var data=。=
--
FROM 61.135.255.*
异步请求是容易晕……习惯了就好了。。
【 在 yegle (一阁@bobopopo是大牛) 的大作中提到: 】
: 我再理一下逻辑……我自己都糊涂了……
--
FROM 61.135.255.*