我有一个这样的状态模型:
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);
我的参数将如下所示:
{"argBO":
{ "StateId":0,
"StateName":"jjhj",
"ShortName":"jjj",
"IsActive":true,
"CountryId":8,
"errors":[],
"CountryName":"Antigua and Barbud"
}
}
如果我可以从上面删除 argBO,我可以直接推送“args”而不是 self.StateModel,再次通过将 args 转换为对象。
self.StatesList.Push(args);
我尝试过这样的:
jQuery.parseJSON(args(jQuery.parseJSON(argBO)))
jQuery.parseJSON(args(jQuery.parseJSON[argBO]))
jQuery.parseJSON(args[argBO]))
但是它们都不起作用,请有人告诉我!!
最佳答案
你可以试试这个:
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);
关于javascript - 在knockout js中更改服务器的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23674106/