Javascript 在淘汰js中更改服务器中的数据
我有一个这样的状态模型:Javascript 在淘汰js中更改服务器中的数据,javascript,knockout.js,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('')
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 })
}
{"argBO":
{ "StateId":0,
"StateName":"jjhj",
"ShortName":"jjj",
"IsActive":true,
"CountryId":8,
"errors":[],
"CountryName":"Antigua and Barbud"
}
}
我通过以下方式将其转换为json字符串发布:
var args=JSON.stringify({argBO: jQuery.parseJSON(ko.toJSON(self.StateModel))});
在此之后,我想将其推送到我的可观察数组状态列表,因此我将其转换为对象,并将其推送到如下位置:
var model = jQuery.parseJSON(ko.toJSON(self.StateModel));
self.StatesList.push(model);
我的args将如下所示:
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 })
}
{"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);
为什么?我的意思是,为什么要将JSON解析为toJSON?我只想在每次尝试这个控制台时将'argBO'对象推入我的可观察数组,而不是'args'。logko.utils.parseJsonargs.argBO.StateName,它会打印我的StateName的正确值,就像我尝试更改StateName一样,比如ko.utils.parseJsonargs.argBO.StateName='asdf';它没有改变,为什么