Я звоню в твиттер API. Получено 100 сообщений + свойства, которые говорят мне, какова следующая страница для вызова. Так что жду 5 сек. и вызвать эту следующую страницу, но JSon приводит к тому, что функция обратного вызова всегда становится пустой во второй раз ... Я думаю, что это, вероятно, проблема JQuery ...
Вот код, чтобы проверить его, если хотите:
<html>
<head>
<script type="text/javascript" src="./jquery-1.4.2.min.js"></script>
<script>
function test() {
var rqUrl = "http://search.twitter.com/search.json?q=%23apple+OR+%23ipad&rpp=100&callback=?"
callTwitterSearchApi(rqUrl);
}
function callTwitterSearchApi(tiwtterRequestUrl) {
debug("request to twitter : " + tiwtterRequestUrl);
// *** FIRST CALL WORKS GREAT... ***
$.getJSON(tiwtterRequestUrl, callTwitterSearchApi_callback);
}
function callTwitterSearchApi_callback(jsonPostsResults) {
debug("callback");
if (jsonPostsResults == null) {
debug("Why is jsonPostsResults null? If I copy paste the request inside a browser, I get something =(");
return;
}
if (jsonPostsResults.error != undefined && jsonPostsResults.error != "") {
debug("twitter api error");
}
var posts = new Array();
$(jsonPostsResults.results).each(function() {
posts.push(this);
});
debug("Number of posts : " + posts.length);
if (jsonPostsResults.next_page != undefined && jsonPostsResults.next_page.trim() != "") {
debug("calling next request in 5 sec...");
// *** WHEN COMMING BACK FROM THAT LINE, JSON RESULTS == NULL?! ****
setTimeout("callTwitterSearchApi(\"http://search.twitter.com/search.json" + jsonPostsResults.next_page + "\")", 5000);
}
}
function debug(message) {
document.getElementById('debug').innerHTML = message + "\n" + document.getElementById('debug').innerHTML;
}
</script>
</head>
<body>
<input type="button" onclick="test();" value="test" /><br />
<textarea id="debug" cols="80" rows="20"></textarea>
</body>
</html>
Итак, в строке 20 при втором обратном вызове (обратно из setTimeout) параметр «jsonPostsResults» всегда возвращается как ноль ... Я понятия не имею, почему. Если я скопирую этот второй запрос в браузер, он вернет 100 результатов. У кого-нибудь была такая проблема с функциями Ajax / JQuery при вызове его с помощью setTimeout?