我在网页中有一个非常复杂的表单。用户实际上构建了一个复杂的对象。使用jQuery处理UI(显示,隐藏部分,复制和删除子表单,......)。
简单地在用户提交时发布表单虽然可能,但似乎不是最好的解决方案:很难为字段组合唯一的名称(可以有对象数组)并在服务器端解码整个内容。
我想我应该发布一个对象的JSON表示。我怎么做?
我不打算进行ajax调用。我想提交表单但是使用JSON而不是通常的application / x-www-form-urlencoded表单。
FWIW,后端是ASP.NET MVC。
TIA,
答案 0 :(得分:3)
答案 1 :(得分:1)
你可以试试这个:
$("form").submit(function()
{
//Checking data here:
$("input").each(function(i, obj)
{
});
alert($(this).serialize());
alert(toJSON($(this).serializeArray()));
//return false;
});
function toJSON(obj)
{
var json = '({';
$.each(obj, function(k,v){
var q = typeof v == 'string' ? ~v.indexOf("'") ? '"' : "'" : '';
if (typeof v == 'object')
v = toJSON(v).slice(0,-1).substr(1);
json+= k + ':'+ q + v + q + ',';
});
return json.slice(0,-1)+'})';
};
答案 2 :(得分:1)
如果您使用的是jquery,可以查看这两个函数.serialize()和.serializeArray()
这些功能可以帮助您获取表单数据,而无需手动迭代。
答案 3 :(得分:-1)
使用jquery form plugin通过AJAX提交表单。
对于重复的字段名称,默认方式通常是将[]
附加到名称 - 大多数服务器端语言然后创建包含所有提交值的数组。根据语言的不同,它可能会在没有[]
的情况下发生,但我确信MSDN会帮助您,因为您在后端使用ASP.NET。