0

私は、phpページから渡された次のjsonオブジェクトを扱う例に従っています:-

 {"book":[{"title":"Harry Potter","author":"J K. Rowling","year":"2005","price":"29.99"},{"title":"Learning XML","author":"Erik T. Ray","year":"2003","price":"39.95"}]}

次のように、すべてのデータを繰り返し処理してテーブルに出力できることを知っています。

$.each(data.book, function(index, book) {
                    content = '<tr><td>' + book.title + '</td>';
                    content += '<td>' + book.author + '</td>';
                    content += '<td>' + book.year + '</td>';
                    content += '<td>' + book.price + '</td></tr>';
                    $(content).appendTo("#content2");
                });

しかし、json データが同じ構造に従って動的であるとします。上記のコードをどのように適応させて動作させることができますか? ある種のネストされたループが必要だと思っていました。

私を混乱させているのは、行 $.each(data.book, function(index, book) { data.book が常に data.book であるとは限らないため、 data.foo になり、 book.title を参照する行は常に同じであるとは限らない

どんなガイダンスでも大歓迎です

4

2 に答える 2

1

はい、このようにネストされたループで実行できます

var content = '';
$.each(data.book, function(index, book) {
    content += '<tr>';
    $.each(book,function(k,v){
        content += '<td>' + v + '</td>';
    });
    content += '</tr>';   
});
$(content).appendTo("#content2");

http://jsfiddle.net/tjjQh/

ああ..次に for in ループを使用します

for (v in data) {
    $.each(data[v], function(index, book) {
        content += '<tr>';
        $.each(book, function(k, v) {
            content += '<td>' + v + '</td>';
        });
        content += '</tr>';
    });
}

http://jsfiddle.net/8YCgA/ </p>

于 2012-12-12T21:10:53.703 に答える
-1

jQuery テンプレートをチェックしてみてください。

var data = [  
        { name : "John",  age : 25 },  
        { name : "Jane",  age : 49 },  
        { name : "Jim",   age : 31 },  
        { name : "Julie", age : 39 },  
        { name : "Joe",   age : 19 },  
        { name : "Jack",  age : 48 }  

次のように表現できます。

<li>  
    <span>{%= $i + 1 %}</span>  
    <p><strong>Name: </strong> {%= name %}</p>  
    {% if ($context.options.showAge) {  %}  
        <p><strong>Age: </strong> {%= age %}</p>  
    {% } %}  
</li> 
于 2012-12-12T20:53:33.617 に答える