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 的行并不总是一样,它可能是 book.bar

任何指导最受赞赏

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 回答