【发布时间】:2012-01-31 21:35:52
【问题描述】:
我有一个表单,我想通过 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 字符串,其中包含输入名称和值作为键和值对,但我不知道如何更改代码以获取我想要的需要。
我认为我想要实现的是拥有一个对象数组,其中数组的名称始终为 ttOrder(映射到我的临时表名称),对象的第一个条目是产品代码(总是 cProduct - 映射到我的临时表字段名称),带有输入名称的值,对象的第二个条目是数量(总是 iQty - 映射到我的临时表字段值)。
请原谅我使用的任何不正确的术语。
谢谢。
【问题讨论】:
标签: jquery json forms serialization