我有一个包含字段的表单和另一个包含项目的对象列表。但是使用jQuery $("form").serializeObject()
,它不会像这里一样创建正确的对象:
var functionViewModel = new Object();
functionViewModel.Id = 1;
functionViewModel.Name = "F-I-001";
functionViewModel.Localised = [];
functionViewModel.Localised.push({
LocalisedId: '1|1',
Subject: "F-N-001"
});
functionViewModel.CategoryViewModel = new Object();
functionViewModel.CategoryViewModel.CategoryInGroup = [];
functionViewModel.CategoryViewModel.CategoryInGroup.push({
Id: '1'
})
有什么想法吗?
答案 0 :(得分:0)
您可以尝试以下解决方案:
var myObj = {
a: {
one: 1,
two: 2,
three: 3
},
b: [ 1, 2, 3 ]
};
var recEncoded = $.param( myObj);
var recDecoded = decodeURIComponent( $.param( myObj ) );
alert( recEncoded );
答案 1 :(得分:0)
在将数据发送到服务器之前,您需要stringify()
该对象。在服务器上,您需要parse()
。
JSON.stringify()
将对象转换为字符串。使用JSON.parse()
从字符串转换JSON对象。
var functionViewModel = new Object();
functionViewModel.Id = 1;
functionViewModel.Name = "F-I-001";
functionViewModel.Localised = [];
functionViewModel.Localised.push({
LocalisedId: '1|1',
Subject: "F-N-001"
});
functionViewModel.CategoryViewModel = new Object();
functionViewModel.CategoryViewModel.CategoryInGroup = [];
functionViewModel.CategoryViewModel.CategoryInGroup.push({
Id: '1'
})
var str = JSON.stringify(functionViewModel)
var obj = JSON.parse(str);
console.log(str);
console.log(obj);

将其发送到服务器。使用
$.post(
url: url, //Url of your server
data: JSON.stringify(obj), //data you want to send to server
function(data, status) {
alert("Success");
});
正如Heena所指出的,您可以使用param()
您需要在提交之前将对象序列化/转换为字符串。您可以使用$.param()
。
$('#form').val($.param(functionViewModel));
答案 2 :(得分:0)
这个解决了我的问题,我需要自定义它才能在列表中找到一个列表,但对我来说效果很好
http://jsfiddle.net/7MAUv/1/ enter code here