以JSON(无AJAX)的形式提交表单

时间:2011-10-04 04:03:42

标签: asp.net-mvc json post

是否可以在不使用AJAX的情况下以JSON形式提交表单数据?

我尝试更改了enctype:

<form enctype="application/json"></form>

但根据on w3schools

,这不是有效值

我希望这种行为的原因是请求的URL将返回一个文件,如果我使用AJAX,我显然无法做任何事情。我想发送标记为Content-Type: application/json的JSON数据,以便ASP.NET MVC将使用其JSON绑定。

8 个答案:

答案 0 :(得分:1)

是的,您可以使用插件将表单序列化为对象。我为你写了一个样本;

//头

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="jquery.serialize-object.js"></script>

您可以从here

下载插件

//表格

<form id="frm">
<input type="text" name="Model[Firstname]">
<input type="text" name="Model[Lastname]">
<input type="text" name="ModelDetail[PhoneNumber]">
...
<button type="button" onclick="sendForm()">Send</button>
</form>

// JS

function sendForm(){
model_data = $("#frm").serializeObject();
$.ajax({
url: 'YOUR_SERVICE_URL',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify(model_data),
dataType: 'json',
success:function(e){
    // I know, you do not want Ajax, if you callback to page, you can refresh page here
   }
});
祝你好运!

答案 1 :(得分:1)

您是否可以使用JSON.stringify()来序列化您的客户端对象,然后将其填充到隐藏的输入中并提交您的表单...然后在控制器端将其拉出Request.Form并反序列化它进入你的对象?

[编辑] 刚刚在原始问题的评论部分看到,这实际上是一个重复的帖子,并且这个stackoverflow可以作为解决方案。

答案 2 :(得分:0)

你可以试试;

// html

<form type="POST" action="/Home/Test">
<input id="foo" value="hede">
</form>

// dto

public class TestInDto{
 public string foo {get;set;}
}

//家庭控制器

[HttpPost]
void Test(TestInDto inDto){
 var foo = inDto.foo;

}

答案 3 :(得分:0)

根据W3C标准,您无法使用

传递JSON等数据

<form enctype="application/json"></form>

<强>描述

只要表单的specification属性设置为JSON,实现此enctype的用户代理就会从表单中传输application/json个数据。在过渡期间,不支持此编码的用户代理将fall back使用application/x-www-form-urlencoded。这可以是detected服务器端,此conversion algorithm中描述的specification可用于将此类数据转换为JSON

input names中使用的路径格式很简单。首先,当没有结构化信息时,信息将被简单地捕获为keys对象中的JSON

Reference DOC

答案 4 :(得分:0)

您现在可以设置表单enctype =&#39; application / json&#39;根据2014年5月29日发布的新W3C标准。

您可以查看它:http://www.w3.org/TR/html-json-forms/

答案 5 :(得分:0)

你可以使用Form2js.It是由谷歌设计的,它很容易使用库。

https://github.com/maxatwork/form2js

此外,它可以根据用户要求进行修改。您可以查看他们的许可证。您可以使用以下链接查找此javascript文件的基本示例:

http://form2js.googlecode.com/hg/example/test.html

答案 6 :(得分:-1)

您可以通过AJAX发送请求,然后在控制器中生成文件下载URL并将其发送回AJAX响应中。然后,您可以在另一个窗口中打开该URL。这将是一个完整的基于AJAX的解决方案,因此您可以使用JSON。

答案 7 :(得分:-1)

尝试将这个简单的POST数组存储在变量中,然后将其编码为json obj。 像这样 - &gt;

  

$ postarray =($ _ POST);
  $ jsondata = json_encode($ postarray);

对不起它的PHP