是否可以在不使用AJAX的情况下以JSON形式提交表单数据?
我尝试更改了enctype:
<form enctype="application/json"></form>
但根据on w3schools
,这不是有效值我希望这种行为的原因是请求的URL将返回一个文件,如果我使用AJAX,我显然无法做任何事情。我想发送标记为Content-Type: application/json
的JSON数据,以便ASP.NET MVC将使用其JSON绑定。
答案 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
答案 4 :(得分:0)
您现在可以设置表单enctype =&#39; application / json&#39;根据2014年5月29日发布的新W3C标准。
答案 5 :(得分:0)
你可以使用Form2js.It是由谷歌设计的,它很容易使用库。
https://github.com/maxatwork/form2js
此外,它可以根据用户要求进行修改。您可以查看他们的许可证。您可以使用以下链接查找此javascript文件的基本示例:
答案 6 :(得分:-1)
您可以通过AJAX发送请求,然后在控制器中生成文件下载URL并将其发送回AJAX响应中。然后,您可以在另一个窗口中打开该URL。这将是一个完整的基于AJAX的解决方案,因此您可以使用JSON。
答案 7 :(得分:-1)
尝试将这个简单的POST数组存储在变量中,然后将其编码为json obj。 像这样 - &gt;
$ postarray =($ _ POST);
$ jsondata = json_encode($ postarray);
对不起它的PHP