1

我是 JSON 架构的新手,在我的代码后面(ASP.Net 3.5)中,从 web 方法,我从数据表返回一个数组,如下所示:

身份证 | 数字
___________

1 | 200  
1 | 300  
2 | 400  
2 | 500  
3 | 600  

我将此表以数组的形式返回给 JSON 对象。
我想要做的是使用 JQuery 如下构造数据:

<div id="1">ID = 1</div>
    <div id="11">200</div>
    <div id="12">300</div>
</div>
<div id="2">ID = 2</div>
    <div id="21">400</div>
    <div id="22">500</div>
</div>
<div id="3">ID = 3</div>
    <div id="31">600</div>
</div>
4

2 回答 2

1

对于渲染本身,我会推荐一个jsRender 之类的 javascript 模板库。至于 JSON 格式,最好的办法是在服务器端对数据进行分组,并让每个属性都包含一个数组,因此您的 JSON 将如下所示:

var data = {
    "1": ["200", "300"],
    "2": ["400", "500"],
    "3": ["600"]
}
于 2012-10-02T12:20:55.517 回答
0

您应该手动执行此操作,使用对象对您的值进行分组。假设您的 JSON 对象反序列化为:

var myTable = [{ID: 1, Number:200}, {ID: 1, Number:300}, {ID: 2, Number:400}, {ID: 2, Number:500}, {ID: 3, Number:600}]

然后此代码将对值进行分组:

var myObject = {};
$.each(myTable, function() {
    if (!myObject[this.ID]) myObject[this.ID] = [];
    myObject[this.ID].push(this.Number);
}

然后你应该构建你的 html 代码结构......像:

var myHtml = $("");
$.each(myObject, function(ID, Numbers) {
    if (Numbers) {
        var divId = $("<div></div>").attr("id", ID);
        $.each(Numbers, function(index, number) {
            divId.append($("<div></div>").attr("id", ID.toString() + (index+1).toString()).html(number));
        }
        divId.appendTo(myHtml);
    }
}

请注意,您的问题 html 中的 html 无效,它的结束标签太多</div>,因此您可以根据需要调整代码。

于 2012-10-02T12:30:58.770 回答