【问题标题】:JSon/Jquery request with a setTimeout always returns a "null" result? (for Twitter Search API)带有 setTimeout 的 JSON/Jquery 请求总是返回“null”结果? (用于 Twitter 搜索 API)
【发布时间】:2011-01-28 20:54:01
【问题描述】:

我调用了 twitter API。检索了 100 个帖子 + 一个告诉我要调用的下一页是什么的属性。所以我等了5秒。并调用该下一页,但是第二次回调函数中的JSon结果始终为null...我认为这可能是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 个结果。当使用 setTimeout 调用 Ajax/JQuery 函数时,有人遇到过类似的问题吗?

【问题讨论】:

  • 您是否尝试过在 Firebug 中进行调试 - 如果是,它对问题有何说明?
  • 是的,我试过了。不多,它在第一次从 setTimeout 调用时弹出回带有 null 参数的 callTwitterSearchApi_callback。我也试图杀死计时器,没什么……奇怪:(

标签: jquery ajax json twitter


【解决方案1】:

这是因为你没有指定 '&callback=?'应第二次要求

修复: setTimeout("callTwitterSearchApi(\"http://search.twitter.com/search.json" + jsonPostsResults.next_page + "&callback=?\")", 5000);

【讨论】:

    猜你喜欢
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多