-1

リストにjsonを入力しています。ただし、そのjson(phpファイル)はX秒後(不明な時間)に結果を返します。

外部ファイル-jsonデータの取得:

$(function(){
                // can't modify this file
                $.getJSON('json.php',
                    function(data) {            
                    items = [];
                    $.each(data, function(key, val) {
                            items.push('<li id="' + key + '">' + val + '</li>');
                    });
                });
    });

インラインコード-出力:

<script>   
 $(function(){
                $('<ul/>', {
                        'class': 'my-new-list',
                        html: items.join('')
                }).appendTo('#result');
        });
</script>

現在#result、両方のコードが同時にロードされているため、出力に「アイテム」が見つからないため、何も表示されません。

外部ファイルがjsonデータを提供するまで強制的に待機させるために、インラインコードを変更するにはどうすればよいですか?多分オブザーバー?

編集:私はそれを十分に説明しなかったようです。英語が下手でごめんなさい。私はJs/Jqueryの初心者でもあります。

編集2:jsonデータの取得に遅延がなければ、すべてが機能しますが、シリアル通信を介して接続された一部の外部デバイスに依存し、jsonの取得に2、3、または5秒かかる場合があります。

4

1 に答える 1

2

あなたの唯一のオプションは、データが利用可能になることを定期的にチェックする setInterval を使用することになるようです。理想的な方法では、ファイル 1 を変更する必要があります。

function handleData(items) {
    // dostuff with items
}

var itemsInterval = setInterval(function(){
    if (items && items.length) {
        handleData(items);
        clearInterval(itemsInterval);
    }
},250);
于 2013-02-14T20:20:44.550 に答える