1

Yammer から RSS フィードのようなメッセージ表示を作成しようとしています。

<script type="text/javascript">
    var cleanit = null;
    $(document).ready(function(){ cleanit = setInterval('callYammer()', 50);});
    function callYammer(){ 
        clearInterval(cleanit);
        $.getJSON("./yammer.feed?request=messages",function(json) {
            var objYammer = $("#yammerFeed");
            objYammer.html('');
            $.each(json.messages, function(i, m) {
                if(!m.replied_to_id && m.body.plain){
                    var data = "<li>" + m.body.plain;
                    $.getJSON("./yammer.feed?request=users&userid="+m.sender_id,function(jsonUser) {
                        //alert(jsonUser.full_name);
                        data = data + " - "+jsonUser.full_name;
                    });
                    data = data + "</li>";
                    objYammer.append(data);
                }
            });
        });
        return false;
    }
</script>

ユーザー名とともにメッセージを表示したい。しかし、最終的に、firebug デバッガーから、内部の JSON データが期待どおりに追加されていないことがわかりました。呼び出しがヒットし、データが呼び出しから来ていますが、

data = " - "+jsonUser.full_name;

ユーザーに対するすべての JSON 呼び出しの後に実行されます。

内部 JSON 呼び出しからメイン JSON データにユーザー名を追加するにはどうすればよいですか?

4

1 に答える 1

1

あなたはラインを呼び出します

data = data + "</li>";
objYammer.append(data);

内部の getJSON AJAX 呼び出しに続くコードでは、おそらく AJAX 要求が終了する前にこれらの行が実行されることになります。コードを内部の AJAX 成功関数に挿入して、結果が利用可能になった後にのみ起動されるようにします。

function callYammer(){ 
    clearInterval(cleanit);
    $.getJSON("./yammer.feed?request=messages",function(json) {
        var objYammer = $("#yammerFeed");
        objYammer.html('');
        $.each(json.messages, function(i, m) {
            if(!m.replied_to_id && m.body.plain){
                var data = "<li>" + m.body.plain;
                $.getJSON("./yammer.feed?request=users&userid="+m.sender_id,function(jsonUser) {
                    console.log('1:'+jsonUser.full_name);
                    data += " - "+jsonUser.full_name + "</li>";
                    objYammer.append(data);
                    console.log('2:'+data);
                });
            }
        });
    });

編集:

console.log()ステートメントを追加しただけです。彼らは何を返しますか?

于 2013-09-16T09:11:40.940 に答える