var query1 = urlencode($('input[name="searchTerm1"]').val()); //user1
var query2 = urlencode($('input[name="searchTerm2"]').val()); //user1
var rpp = 20; //number of tweets to retrieve out
var c=0;
var f1=new Array();
var f2=new Array();
var common=new Array();
$.getJSON('http://twitter.com/followers/ids.json?screen_name='+ query1 + '&callback=?',
function(data) {
f1=data;
$('#content').append('p'+f1[0]+'p');//this one is coming
});
$.getJSON('http://twitter.com/followers/ids.json?screen_name='+ query2 + '&callback=?',
function(data1) {
f2=data1;
});
$('#content').append('p'+f1[0]+'p');//this one is not coming...its showing Undefined
})
在此代码,如果你看到清楚我一直在使用// 2追加语句确定
它们中的一个工作,阵列中输出该数
但另一种是未定义的输出
我已经定义数组所以应该取值,但实际上寺发生的是数组的$ .getJSON函数外部无法访问。
任何帮助将不胜感激。
谢谢
@anand,$ .getJSON()以异步方式检索JSON数据。 你回调函数的目的是,一旦JSON已经从异步请求接收到的执行工作。 我将简化你的榜样一些:
var query1 = urlencode($('input[name="searchTerm1"]').val()); //user1
var query2 = urlencode($('input[name="searchTerm2"]').val()); //user1
var rpp = 20; //number of tweets to retrieve out
var c=0;
var f1=new Array();
var f2=new Array();
var common=new Array();
$.getJSON('http://twitter.com/followers/ids.json?screen_name='+ query1 + '&callback=?',
// 1st callback
function(data) {
f1=data;
// We know that f1 has been assigned, so unless the Twitter API
// returns an empty Array, f1[0] will not be Undefined.
$('#content').append('p'+f1[0]+'p');//this one is coming
});
$.getJSON('http://twitter.com/followers/ids.json?screen_name='+ query2 + '&callback=?',
// 2nd callback
function(data1) {
f2=data1;
});
// This statement may be executed before 1st callback and therefore
// f1 may still be an empty Array causing f1[0] to return Undefined.
$('#content').append('p'+f1[0]+'p');//this one is not coming...its showing Undefined
请查看评论关于您的来电追加()。 希望这可以帮助!
您需要在回调函数中添加你的价值观。 现在,你的两个$ .getJSON后的代码行调用JSON下载完成之前被解雇。 这就是为什么第一个追加的工作。 你有一个时机的问题。
为了说明这个时机,用这样的警报消息...
$.getJSON('http://twitter.com/followers/ids.json?screen_name='+ query1 + '&callback=?', function(data) {
f1=data;
alert('Two');
$('#content').append('p'+f1[0]+'p');//this one is coming
});
$.getJSON('http://twitter.com/followers/ids.json?screen_name='+ query2 + '&callback=?', function(data1) {
f2=data1;
alert('Three');
});
alert('One');
$('#content').append('p'+f1[0]+'p');//this one is not coming...its showing Undefined
你永远不引用F2,所以你可能有一个复制/粘贴错误。 您的意思是再次引用F1?
顺便说一句,这是更好地初始化这样的数组
var f1=[];
var f2=[];
var common=[];
而不是使用“新阵”。
此外,由于乔希指出,Ajax调用是异步的。 你不想靠过来的数据,直到它的用武之地。
目前您的$的getJSON调用会回来马上,所以你的程序流程是不是你似乎会发生什么。
jQuery的$的getJSON需要一个回调函数作为其第三个参数。 你要设置一个呼叫后做任何处理。
当你使用Ajax编程,你不会有一个很大的一段JavaScript代码,你有一大堆的代码事件驱动件。