-1

每个人。我有以下示例脚本:

<script type="text/javascript">
$(document).ready(function() {
    var url =  "http://api.twitter.com/1/statuses/user_timeline/codinghorror.json";
    $.getJSON(url + "?callback=?", null, function(tweets) {
        for(i in tweets) {
            tweet = tweets[i];
            $("#tweet-list").append(tweet.text + "<hr />");
        }
    });
});
</script>

现在我想在单击时刷新从 url 获取的数据。我添加了一个全局变量“内容”并尝试:

<script type="text/javascript">
$(document).ready(function() {
$("body").click(function(){ 
    var content="";
    var url =  "http://api.twitter.com/1/statuses/user_timeline/codinghorror.json";
    $.getJSON(url + "?callback=?", null, function(tweets) {
        for(i in tweets) {
            tweet = tweets[i];
            content+=tweet.text + "<hr />";
        }
    });
    $("#tweet-list").html(content); 
});
});
</script>

但它什么也没显示,然后我想可能是因为 '$("#tweet-list").html(content);' 在 'content+=tweet.text + " 之前执行


"',所以我尝试在()之后添加一个回调函数:

<script type="text/javascript">
$(document).ready(function() {
$("body").click(function(){ 
    var content="";
    var url =  "http://api.twitter.com/1/statuses/user_timeline/codinghorror.json";
    $.getJSON(url + "?callback=?", null, function(tweets,after) {
        for(i in tweets) {
            tweet = tweets[i];
            content+=tweet.text + "<hr />";
        }
    after(content){$("#tweet-list").html(content);}; 
    });

});
});
</script>

仍然无法正常工作(什么也没显示),有什么帮助吗?谢谢。

4

2 回答 2

2

Ajax 是异步的,因此您必须等待响应和一些数据返回,然后才能对其进行任何操作。当你尝试使用ajax函数之后的内容时,它还没有完成,并且没有内容。当有实际内容要附加并且 ajax 调用完成时,您必须在回调中执行此操作:

$(document).ready(function() {
    $("body").click(function(){ 
        var content="",
            url =  "http://api.twitter.com/1/statuses/user_timeline/codinghorror.json";
        $.getJSON(url + "?callback=?", null, function(tweets,after) {
            for(key in tweets) {
                if (tweets.hasOwnProperty(key)) {
                    content+=tweets[key].text + "<hr />";
                }
            }
            $("#tweet-list").html(content); 
        });
    });
});
于 2012-12-08T17:29:20.643 回答
1

AJAX 请求完成后,您需要更改 HTML:

$.getJSON(url + "?callback=?", null, function(tweets) {
    var content = "";
    for(i in tweets) {
        var tweet = tweets[i];
        content += tweet.text + "<hr />";  
    }
    $("#tweet-list").html(content);
});

另外,这里不需要全局变量,所以使用var关键字。

于 2012-12-08T17:31:43.917 回答