我有一个表单,我想通过jQuery AJAX作为JSON提交,这样我就可以使用我的编程语言的本机方法(使用READ-JSON的OpenEdge)将其读入服务器端的临时表中。我的表单需要生成的JSON示例是:
{"ttOrder": [
{
"cProduct": "prod01",
"iQty": 123
},
{
"cProduct": "prod02",
"iQty": 456
}
]}
我的表格由一个表格组成,该表格包含产品信息,产品代码,描述等行和数量输入字段,例如
<input id="prod01" name="prod01" value="0">
从Stack Overflow搜索我发现了一些看似他们可能有帮助的建议,因为我认为我需要序列化表单:
(function( $ ){
$.fn.serializeJSON=function() {
var json = {};
jQuery.map($(this).serializeArray(), function(n, i){
json[n['name']] = n['value'];
});
return json;
};
})( jQuery );
var obj = {"ttOrder": [$('#prodform').serializeJSON() ]};
然后在$ .ajax调用中使用
...
data: JSON.stringify(obj),
...
但是,这给出了以下内容:
{"ttOrder": [
{
"prod01": "123",
"prod02": "456"
}
]}
我认为上面的所有代码都在创建一个JSON字符串,其中包含输入名称和值作为键和&amp;价值对,但我没有专业知识来改变代码以获得我所需要的。
我认为我想要实现的是拥有一个对象数组,其中数组的名称始终为ttOrder(映射到我的临时表名称),对象的第一个条目是产品代码(总是cProduct - 映射到我的临时表字段名称),其值为输入的名称,对象的第二个条目是数量(总是iQty - 映射到我的临时表字段值)。
请原谅我使用的任何不正确的术语。
感谢。
答案 0 :(得分:3)
第一个例子是关闭的。这应该在这里工作:
(function( $ ){
$.fn.serializeJSON=function() {
return jQuery.map($(this).serializeArray(), function(i, n){
var json = {};
json['cProduct'] = n['name'];
json['iQty'] = parseInt(n['value']);
return json;
}).get();
};
})( jQuery );
var obj = {"ttOrder": $('#prodform').serializeJSON()};