-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から取得したデータを更新します。グローバル変数「content」を追加して、次のことを試しました。

<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+"の前に実行


"'なので、after()にコールバック関数を追加しようとしました:

<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関数の後にコンテンツを使おうとすると、まだ実行されておらず、コンテンツがありません。追加する実際のコンテンツがあり、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 に答える