jQuery表单serializeObject

时间:2017-06-14 20:25:36

标签: javascript jquery

我有一个包含字段的表单和另一个包含项目的对象列表。但是使用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'
})

有什么想法吗?

3 个答案:

答案 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