0

我正在尝试使用Dynatable库将 json 对象转换为 html 表。

PS:这个问题也存在于其他库,如DataTable

但是,目前我的整个表格的单元格值是未定义的。

这是我的示例 Json 数据

[
   {"Adult":2,"Child":1}, 
   {"Adult":3,"Child":2},
   {"Adult":4,"Child":1}
]

这是我的 HTML 表格

<table id="myTable">
    <thead>
        <tr>               
            <th>Adult</th>
            <th>Child</th>             
        </tr>
    </thead>
    <tbody>

    </tbody>
</table>

这是javascript代码

$(document).ready(function () {
    $.ajax({
        type: 'GET',
        url: 'http://localhost:51071/api/Foo',               
        success: function (response) {
            console.log(response);
            $("#myTable").dynatable({                    
                dataset: {
                    records: response
                }
            });
        },              
        dataType: 'json'
    });
});

我得到未定义值的任何特殊原因?

在他们用于转换属性名称的文档中,他们提到了默认命名约定是camelcase,并且给出的示例是favoriteMusic。他们是否希望我的字段名称以小写字母开头?

更新1:

原来是因为字段名称以大写字母开头。我将我的 json 数据更改为以下并且它有效

[
   {"adult":2,"child":1}, 
   {"adult":3,"child":2},
   {"adult":4,"child":1}
]

有什么想法可以解决以大写字母开头的字段名称吗?

4

1 回答 1

-1

这就是我最终做的

    function firstLetterLowerCase(str) {
        return str.charAt(0).toLowerCase() + str.substr(1);
    }
    $(document).ready(function () {

        $.ajax({
            type: 'GET',
            url: 'http://localhost:51071/api/Foo',               
            success: function (response) {

                response = response.map(function(resObj) {
                    var obj = {};
                    for (key in resObj) {
                        if (resObj.hasOwnProperty(key)) {
                            obj[firstLetterLowerCase(key)] = resObj[key];
                        }
                    }
                    return obj;
                });
                $("#myTable").dynatable({                    
                    dataset: {
                        records:response
                    }
                });                },              
            dataType: 'json'
        });
    });

所以基本上写了一个函数来将json对象的字段名的第一个字母从大写转换为小写。

当条目数量很大时,这可能不会那么高效。

于 2018-06-28T11:15:59.690 回答