- 主题:问个jquery的问题
[ 用户 yegle 在转载时对文章内容进行了编辑 ]
发信人: yegle (一阁@bobopopo是大牛), 信区: WebGeeks
标 题: 问个jquery的问题
发信站: 水木社区 (Mon Jul 20 14:27:00 2009), 站内
function fetchJSON(start,keyword){
$.getJSON("http://api.douban.com/movie/subjects?alt=xd&callback=?&st
art-index="+start+"&max-results=1&q="+$("#autofetch").val(),function(data){
var id=data.entry[0].id['$t'];
$.getJSON(id+"?alt=xd&callback=?", function(data){
return data;
})
})
}
为什么我得到的返回都是undefined呢?
--
修改:yegle FROM 123.127.134.*
FROM 123.127.134.*
不是跨域问题,因为如果我直接在getJSON里面处理data的话没有任何问题
在return前加了console.log,用var data=fetchJSON(1,'test');来调用函数,结果data is undefined这个信息出现早于console.log的记录,这个是啥情况?
【 在 Kommit (小七 - 无房无车已婚正太) 的大作中提到: 】
: 跨域?
--
FROM 123.127.134.*
冒死上个附件……
代码很乱别笑话……
【 在 lailai9 (赖赖) 的大作中提到: 】
: 最好有大家可以直接访问到的页面。。很多时候都是一些细节导致的问题,能看到具体的页面会省去大量口舌。。
--
FROM 123.127.134.*
附件(72.3KB) 桌面.rar【 在 lailai9 (赖赖) 的大作中提到: 】
: 看明白了。。
: 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值。。
明白了……但是还是不知道怎么返回这个值给var data=。=
: })
: })
: // 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了一堆数据给不知道谁,没人理会那些数据了。。
--
FROM 123.127.134.*
我再理一下逻辑……我自己都糊涂了……
【 在 lailai9 (赖赖) 的大作中提到: 】
: 修改逻辑结构。。
: 把真正的逻辑处理的代码,放在第二个callback函数里头。。
--
FROM 123.127.134.*