$.getJSON('http://twitter.com/followers/ids.json?screen_name=/…'+ query1 + '&callback=?',
function(data) {
alert('JSON data string 1 is: '+data);
$.getJSON('http://twitter.com/followers/ids.json?screen_name=/…'+ query2 + '&callback=?',
function(data1) {
alert('JSON data string 2 is: '+data1);
f2=data1;
f1=data;
for(var i=0; i "less than" f1.length; i++)
{
for(var j=0; j "less than" f2.length; i++)
{
if (f1[i] == f2[j])
{
common[c]=f1[i];
c+=1;
}
}
}
$('#content').append(''+common.length+'');//this line is not working though.......
});
});
在这一行中
$('#content').append(''+common.length+'');
实际上并不显示页面挂起的输出
任何帮助将不胜感激。
谢谢
答案 0 :(得分:6)
不要嵌套通话。您还可以避免一些内存问题,其中javascript为每个匿名函数维护所有局部变量的副本。通过分别进行两次调用,您也可以一次执行两次调用,而不是按顺序执行。
如果我理解你的目的,这是一种更好的方法。再加上轮询gotA和gotB,你甚至可以为用户做一个不错的“等待A,等待B”通知。
编辑:添加了上一个答案的循环修复。
var gotA, gotB;
var followingA, followingB;
function getCommonFollowers(user1, user2)
{
gotA = false;
gotB = false;
jQuery.getJSON('http://twitter.com/followers/ids.json?screen_name=/…'+ user1 + '&callback=?', gotFollowersOfA );
jQuery.getJSON('http://twitter.com/followers/ids.json?screen_name=/…'+ user2 + '&callback=?', gotFollowerOfB );
}
function gotFollowersOfA(data)
{
followingA = data;
gotA = true;
if (gotB) {
compareFollowersAB();
}
}
function gotFollowersOfB(data)
{
followingB = data;
gotB = true;
if (gotA) {
compareFollowersAB();
}
}
function compareFollowersAB()
{
f2=followingA;
f1=followingB;
for(var i=0; i < f1.length; i++) {
for(var j=0; j < f2.length; j++) {
if (f1[i] == f2[j]) {
//console.log("Adding f1[i]");
common.push(f1[i]);
}
}
}
$('#content').append(''+common.length+'');
}
答案 1 :(得分:2)
你的第二个for循环增加i而不是j。
您不会声明任何可能导致范围问题的变量等。
你可以粘贴你的实际代码,这是一个艰难的要求,期望任何人在没有你的脚本的情况下诊断问题。
还可以在jsbin.com或pastebin.me上创建问题演示。
答案 2 :(得分:1)
你绝对应该使用Great Turtle的建议,但是自从我尝试了它以后,这是你的代码的修改版本,它可以工作:
var query1 = 'user1';
var query2 = 'user2';
var data;
var data1;
var f1;
var f2;
var common = [];
var c = 0;
$(document).ready(function() {
$.getJSON('http://twitter.com/followers/ids.json?screen_name=' + query1 + '&callback=?',
function(data) {
console.log('JSON data string 1 is: ' + data);
$.getJSON('http://twitter.com/followers/ids.json?screen_name=' + query2 + '&callback=?',
function(data1) {
console.log('JSON data string 2 is: ' + data1);
f2=data1;
f1=data;
for(var i=0; i < f1.length; i++) {
for(var j=0; j < f2.length; j++) {
if (f1[i] == f2[j]) {
//console.log("Adding f1[i]");
common.push(f1[i]);
}
}
}
$('#content').append(''+common.length+'');
});
});
});
主要修复是你的第二个循环,如前所述,使用i ++而不是j ++,所以你的循环变得疯狂。
请注意,我已将警报调用更改为console.log,因此请确保您使用安装了Firebug的Firefox,或者只是将警报再次替换为console.log。
答案 3 :(得分:0)
不应该是'http://'?
$.getJSON('http://twitter.com...'
答案 4 :(得分:0)
声明json函数外部的常见变量。