Javascript SyntaxError:无法使用json解析绑定

Javascript SyntaxError:无法使用json解析绑定,javascript,knockout.js,Javascript,Knockout.js,我只是从击倒JS开始,我很难找到这里出了什么问题。 我正在调用控制器Web服务以获取一些我希望在页面中显示的数据 这是我的ViewModel: function ViewModel() { var self = this; self.MonthSalesList = ko.observableArray(); var url = 'myurl'; self.GetQueryData = function () { $.ajax({

我只是从击倒JS开始,我很难找到这里出了什么问题。 我正在调用控制器Web服务以获取一些我希望在页面中显示的数据

这是我的ViewModel:

function ViewModel() {
    var self = this;

    self.MonthSalesList = ko.observableArray();

    var url = 'myurl';

    self.GetQueryData = function () {
        $.ajax({
            type: "GET",
            url: url,             
            dataType: "json",
            success: function (data) {
                console.log('callback success');
                console.log(data);
                var observableData = ko.mapping.fromJS(data);
                var array = observableData();
                self.MonthSalesList(array);
            },         
            error: function (jq, st, error) {
                alert(error);
            }           
        });
    }
}

$(document).ready(function () {
    ko.applyBindings(new ViewModel());
});

和html格式:

<body>
    <table>
        <thead>
            <tr>
                <th>Year</th>
                <th>Mes</th>
                <th>Ano Atual</th>
                <th>Ano Anterior</th>
                <th>Variação</th>
            </tr>
        </thead>
        <tbody data-bind="foreach: vendasMesList">
            <tr>
                <!-- <td data-bind="text: ko.toJSON($data)"></td> -->

                    <td data-bind="text: Year"></td>
                    <td data-bind="text: Mes"></td>
                    <td data-bind="text: Ano Atual"></td>
                    <td data-bind="text: Ano Anterior"></td>
                    <td data-bind="text: Variação"></td>

                </tr>
            </tbody>
        </table>
        <br/>
        <input type="button" value="Get Sales" data-bind="click: GetQueryData" />
    </body>

年
Mes
阿诺阿图尔
前路
瓦里亚诺

当我加载页面并单击“Get Sales”时,我只获得json数据的第一个值:

我想从邮递员那里得到的数据如下:

我看到的唯一区别是数字类型的“Ano Atual”

有人知道我做错了什么吗


谢谢。

您需要更改这些:

<td data-bind="text: Ano Atual"></td>
<td data-bind="text: Ano Anterior"></td>

……这些:

<td data-bind="text: $data['Ano Atual']"></td>
<td data-bind="text: $data['Ano Anterior']"></td>


这很难看,但要走的路是这样的。

如果我这样做,我得到的是键,而不是值。有没有想过如何获得价值观?@Dreekun,我不知道你得到了什么。什么显示为
td
s文本?json键:“Ano-previous”和“Ano-Atual”用于每一行观察值@Dreekun,我看到你的链接图像中有一个
映射
对象,定义了要观察的属性-同时添加这两个属性。不幸的是,它的工作方式相同: