是否可以提交表單數據作爲JSON,而不使用AJAX?提交表單爲JSON(無AJAX)
我試圖改變ENCTYPE:
<form enctype="application/json"></form>
但是,這不是根據on w3schools
我想原因有效值這種行爲是請求的URL會返回一個文件,我如果我使用AJAX,顯然不能做任何事情。我想發送標記爲Content-Type: application/json
的JSON數據,以便ASP.NET MVC將使用其JSON綁定。
是否可以提交表單數據作爲JSON,而不使用AJAX?提交表單爲JSON(無AJAX)
我試圖改變ENCTYPE:
<form enctype="application/json"></form>
但是,這不是根據on w3schools
我想原因有效值這種行爲是請求的URL會返回一個文件,我如果我使用AJAX,顯然不能做任何事情。我想發送標記爲Content-Type: application/json
的JSON數據,以便ASP.NET MVC將使用其JSON綁定。
你可以試試;
// 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;
}
是的,你可以序列化的形式像插件的對象。我爲你寫了一個樣本;
//頭
<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
}
});
祝你好運!
https://github.com/macek/jquery-serialize-object – shadowbq
您可以使用JSON.stringify()來序列化您的客戶端對象,然後將其放入隱藏輸入並提交表單...然後在控制器端將其從Request.Form中取出並反序列化它到你的對象?
[編輯] 剛剛在原始問題的下面的評論部分看到,這本質上是一個重複的帖子,而且這個stackoverflow作爲一個解決方案。
您可以通過AJAX發送請求,然後在控制器中生成一個文件下載URL並通過AJAX響應發回。然後,您可以在另一個窗口中打開該URL。這將是一個完整的基於AJAX的解決方案,因此您可以使用JSON。
OP想要不要使用AJAX! – Grandpa
按照W3C標準,你可以使用
<form enctype="application/json"></form>
說明實現這個specification
將他們的形式發送JSON
數據
用戶代理沒有經過像JSON數據每當形式的enctype
屬性設置爲application/json
。在過渡期間,不支持此編碼的用戶代理將fall back
改爲使用application/x-www-form-urlencoded
。這可以是服務器端的detected
,並且可以使用此specification
中描述的conversion algorithm
將此類數據轉換爲JSON
。
input names
中使用的路徑格式很簡單。首先,當沒有結構化信息存在時,信息將被簡單地在一個JSON
對象
應用程序/ json enctype已棄用,不建議使用。請參閱:https://www.w3.org/TR/html-json-forms/ – jsears
捕獲爲keys
嘗試這個簡單的存儲在可變的POST數組,然後對其進行編碼爲JSON OBJ。 是這樣的 - >
$ postarray =($ _ POST);
$ jsondata = json_encode($ postarray);
對不起它PHP
您現在可以設置表單的enctype = '應用/ JSON' 根據2014年5月
公佈29新的W3C標準你可以檢查一下:http://www.w3.org/TR/html-json-forms/
我希望有一天這種支持。我剛剛嘗試過使用Chrome 45,並將它編碼爲application/x-www-form-urlencoded,就像完全不使用enctype一樣。我無法找到任何記錄對此的支持的資源,例如http://caniuse.com。 –
您可以使用Form2js.It是由谷歌設計的,它很容易使用庫。
爲什麼:
https://github.com/maxatwork/form2js
此外,它可以根據用戶的要求。你可以檢查它們的許可。你可以找到的javascript使用下面的鏈接文件的這個基本的例子進行修改你究竟不能對文件做任何事情?您可以隨時將內容寫入另一個窗口,只要內容類型正確,它將下載該文件。 – Josh
爲什麼不能使用常規表單POST? – RoccoC5
請參閱此SO問題http://stackoverflow.com/questions/4256556/post-json-without-model-and-ajax – Prasanth