在敲除js时从服务器更改数据

时间:2014-05-15 09:20:54

标签: javascript knockout.js

我有一个这样的状态模型:

 var stateModel = {
     StateId: ko.observable(0),
     StateName: ko.observable('').extend({ required: true }).extend({ pattern: { message: 'Enter only Text', params: '^[a-zA-Z ]*$'} }),
     ShortName: ko.observable('')
                     .extend({ required: true })
                     .extend({ pattern: 
                                 { message: 'Enter only Text', params: '^[a-zA-Z ]*$'}
                             }),
     IsActive: ko.observable(true),
     CountryId: ko.observable().extend({ required: true })    
}

我通过以下方式转换为json字符串来发布它:

  var args=JSON.stringify({argBO: jQuery.parseJSON(ko.toJSON(self.StateModel))});

之后我想将它推送到我的可观察数组StateList(),所以我将它转换为对象并推送它像:

   var model = jQuery.parseJSON(ko.toJSON(self.StateModel));
   self.StatesList.push(model);

我的args看起来像这样:

   {"argBO":
      { "StateId":0, 
        "StateName":"jjhj",
        "ShortName":"jjj",
        "IsActive":true,
        "CountryId":8,
        "errors":[],
        "CountryName":"Antigua and Barbud"
      }
    }

如果我可以从上面移除argBO,我可以直接推动arg' args'而不是self.StateModel,再次通过将args转换为对象。

self.StatesList.Push(args);

我试过这样:

jQuery.parseJSON(args(jQuery.parseJSON(argBO)))
jQuery.parseJSON(args(jQuery.parseJSON[argBO]))
jQuery.parseJSON(args[argBO]))

但是没有人工作,请任何人告诉我!!

1 个答案:

答案 0 :(得分:0)

你可以试试这个:

var JSONargs = jQuery.parseJSON(ko.toJSON(self.StateModel));

如果您使用knockout.mapping.js插件,则为:

var JSONargs = ko.mapping.toJS(self.StateModel);

如果您想发布它,可以执行以下操作:

$.ajax({data: JSON.stringify({ argBO: JSONargs });

然后你的推动就像

self.StatesList.Push(JSONargs);