这里发生了什么事。我希望从 Twitter 上的多个列表中存储一些数据。每个请求最多返回 20 个数组,因此如果列表有超过 20 个成员,您必须执行多个请求(使用 cursor 属性获取下一个)。所以我想:无限循环调用和解析json
.
基本上我想做的是:调用第一个json(光标值设置为-1)并存储数据。然后调用第二个json
(光标值 = 到上一个的 next_cursor_str 值json
)。然后调用第三个......等等,如果 next_cursor_str 值 = 0 则停止循环(这意味着它是最后一个json
)。那是我的初稿:
var interval = setInterval(function(i){ /*start the loop*/
if (i==1) {var cursor = '&cursor=-1'} else {var cursor = '&cursor='+json.next_cursor_str+''} /* set the value of cursor ine the request. The first request have to be cursor=-1*/
var url='twitter-proxy.php?url='+encodeURIComponent('lists/members.json?owner_screen_name=flavienhamon&slug=lexpress&skip_status=true'+cursor+''); /*Make the request*/
$.getJSON(url, function(json) { processData(json); /*store data for processing*/ console.log(json);
if (json.next_cursor_str == 0) {window.clearInterval(interval);}; /*stop the loop if*/
});
},5000); /*end of loop fonction*/
无限循环工作,有停止事件。但是我不能将第一个被调用的 json 设置为“cursor=-1”,并且'&cursor='+json.next_cursor_str+''
由于 json 尚未定义,因此它不起作用。
所以我做了一些改变:
var url='twitter-proxy.php?url='+encodeURIComponent('lists/members.json?owner_screen_name=flavienhamon&slug=lexpress&skip_status=true&cursor=-1'); /*call manually the first json*/
$.getJSON(url, function(json) { processData(json); console.log(json); NombreCompteJ1 = json.users.length;
var interval = setInterval(function(i){ /*start the loop*/
var url='twitter-proxy.php?url='+encodeURIComponent('lists/members.json?owner_screen_name=flavienhamon&slug=lexpress&skip_status=true&cursor='+json.next_cursor_str+''); /*Make the request*/
$.getJSON(url, function(json) { processData(json); /*store data for processing*/ console.log(json);
if (json.next_cursor_str == 0) {window.clearInterval(interval);}; /*stop the loop if*/
});
},5000); /*end of loop fonction*/
});
这一次,第一个 json 是 call 和 proccess 没有问题。然后循环开始调用第二个json,处理它,然后......再次调用第二个。
控制台捕获:http: //img811.imageshack.us/img811/223/infiniteloop.png
&cursor='+json.next_cursor_str+'
一次又一次地调用第一个 json 的 next_cursor_str 值,而不是调用循环的前一个元素的值。
有人可以解释如何解决这个问题吗?两天以来我一直在学习 jQuery 和 JS,我读了很多书,但我在这方面找不到任何东西。我可以用手来学习!