ko.toJSON没有将JS对象转换为JSON字符串

时间:2014-02-21 17:48:19

标签: jquery asp.net-mvc json knockout.js

在我的视图模型中,我有以下JS对象,其中包含可观察值

var COAData = {
                ACCOUNT_CODE: self.ACCOUNT_CODE,
                ACCOUNT_NAME: self.ACCOUNT_NAME,
                ACCOUNT_DESCRIPTION: self.ACCOUNT_DESCRIPTION,
                OPENING_BALANCE: self.OPENING_BALANCE,
                ACCOUNT_DATE: self.ACCOUNT_DATE,
                MAIN_ACCOUNT: self.MAIN_ACCOUNT,
                SUB_ACCOUNT: self.SUB_ACCOUNT,
                CONTROLL_ACCOUNT: self.CONTROLL_ACCOUNT,
                SUBSIDERY_ACCOUNT: self.SUBSIDERY_ACCOUNT,
                ACCOUNT_TYPE: self.ACCOUNT_TYPE,
                VOUCHING_ACCOUNT: self.VOUCHING_ACCOUNT
            };

我正在使用跟随ajax函数将上述JS对象作为JSON字符串发送到MVC中的控制器,以将数据保存到数据库中。

self.submitCOA = function () {                           
                $.ajax(                
                    {
                        type: "post",
                        url: "/ChartOfAccounts/Create",                        
                        contentType: "application/json",
                        dataType: "json",
                        data: ko.toJSON(COAData),
                        success: function (data) {
                            alert("New Accoungt with Account #" + self.ACCOUNT_CODE(data.ACCOUNT_CODE) + "added successfully");
                            //GetChartOfAccounts();
                        },//success function end
                        error: function (error) {
                            alert(error.status + "<!----!>" + error.statusText);
                        }//error function end
                    }
                    );//ajax function end
            };

在调试时,我开始知道ko.toJSON没有将JS对象(COAData)转换为JSON字符串。而是将空字符串传递给控制器​​

任何帮助?

1 个答案:

答案 0 :(得分:0)

尝试使用ko.toJS而不是ko.toJSON,如果self.ACCOUNT_CODE是可观察的,您应该写self.ACCOUNT_CODE()等等(使用())。