Полагаю, проблема в том, что у вас внутренний $.getJSON()
асинхронный вызов. Он сработает сразу же, не дожидаясь ответа. Затем, всякий раз, когда он получает ответ от сервера, он вызывает ваш код function(tweets) {...
. Нет гарантии, что ответы с сервера будут возвращаться в том же порядке, в котором вы их отправили, тем более что ваш цикл будет запускать все запросы практически одновременно.
Чтобы заставить его работать так, как вы хотите, вам нужно добавить какую-то проверку, чтобы увидеть, ответил ли сервер на все ваши $.getJSON(followers ...
запросы, а затем добавить каждый к <ul>
список. Оставьте мне комментарий, если вам нужна помощь.
Обновление (2010-11-18): Оказывается, я ошибался по поводу проблем, с которыми вы столкнулись. Я думаю, что вы, возможно, перепутали свои классы с идентификаторами. Вот модифицированная версия вашего кода, которая работает:
$.each(data.query.results.row, function() {
var name = this.col0;
var twitter = this.col5;
var li = $('<li>').html('<ul><li>'+name+'</li>'
+ '<li>Twitter ID: @' + twitter
+ ' <span class="tweetdisplay"'
+ 'id="' + twitter + '"></span></li></ul>'
);
$('#result>ul').append(li);
var followers="http://api.twitter.com/1/users/show.json?screen_name="+twitter+"&callback=?"
$.getJSON(followers, function(tweets) {
$('#'+twitter).html('twitter followers: ' +tweets.followers_count);
});
});