Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将复杂的HTML表单发布为JSON?_Javascript_Jquery_Html_Json_Post - Fatal编程技术网

Javascript 如何将复杂的HTML表单发布为JSON?

Javascript 如何将复杂的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,使用脚本序列化为

我在网页中有一个非常复杂的表单。用户实际上构建了一个复杂的对象。使用jQuery处理UI(显示、隐藏部分、复制和删除子表单等)

在用户提交表单时简单地发布表单,虽然可能,但似乎不是最好的解决方案:很难为字段(可以有对象数组)指定唯一的名称,也很难在服务器端解码所有内容

我想我应该发布对象的JSON表示。我该怎么做

我不想打ajax电话。我想提交表单,但使用JSON而不是通常的应用程序/x-www-form-urlencoded表单

FWIW,后端是ASP.NET MVC


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()


这些函数将帮助您获取表单数据,而无需手动迭代。

您解决了这个问题吗?