Javascript 如何将复杂的HTML表单发布为JSON?
我在网页中有一个非常复杂的表单。用户实际上构建了一个复杂的对象。使用jQuery处理UI(显示、隐藏部分、复制和删除子表单等) 在用户提交表单时简单地发布表单,虽然可能,但似乎不是最好的解决方案:很难为字段(可以有对象数组)指定唯一的名称,也很难在服务器端解码所有内容 我想我应该发布对象的JSON表示。我该怎么做 我不想打ajax电话。我想提交表单,但使用JSON而不是通常的应用程序/x-www-form-urlencoded表单 FWIW,后端是ASP.NET MVCJavascript 如何将复杂的HTML表单发布为JSON?,javascript,jquery,html,json,post,Javascript,Jquery,Html,Json,Post,我在网页中有一个非常复杂的表单。用户实际上构建了一个复杂的对象。使用jQuery处理UI(显示、隐藏部分、复制和删除子表单等) 在用户提交表单时简单地发布表单,虽然可能,但似乎不是最好的解决方案:很难为字段(可以有对象数组)指定唯一的名称,也很难在服务器端解码所有内容 我想我应该发布对象的JSON表示。我该怎么做 我不想打ajax电话。我想提交表单,但使用JSON而不是通常的应用程序/x-www-form-urlencoded表单 FWIW,后端是ASP.NET MVC TIA,使用脚本序列化为
TIA,使用脚本序列化为JSON 尽管这个答案使用Ajax,但您可以将序列化字符串写入表单中的输入[type=hidden] 您可以尝试以下方法:
$("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)+'})';
};
My fiddle:使用通过AJAX提交表单。
对于重复的字段名,默认方法通常是在名称后面附加
[]
,然后创建一个包含所有提交值的数组。根据语言的不同,在没有[]
的情况下也可能发生这种情况,但我相信MSDN会对您有所帮助,因为您的后端使用的是ASP.NET。如果您使用的是jquery,则可以查看这两个函数。serialize()和.serializeArray()
这些函数将帮助您获取表单数据,而无需手动迭代。您解决了这个问题吗?