是否可以发送带有JSON内容的POST,它来自隐藏的表单字段?
我的表单如下:
<form method="POST" name="form0" action="https://my_url/comment/id?Id=5">
<input type="hidden" name="id" id="inputField" value='{"number":5,"content":"aaaa"}'/>
</form>
我想发送带有{“number”:5,“content”:“aaaa”}的POST作为JSON而不是字符串。 如果我使用:
document.forms[i].submit();
它以字符串形式发送。
答案 0 :(得分:0)
HTML表单只能将数据编码为application/x-www-form-urlencoded
,multipart/form-data
或text/plain
(后者没有任何实际用途)。
您现有的代码将对其中的JSON进行编码。
如果您要发送application/json
已编码的表单正文,则需要使用XMLHttpRequest
或fetch
。
例如:
var xhr = new XMLHttpRequest();
xhr.open("POST", "/path/to/handler");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(JSON.stringify({"number":5,"content":"aaaa"}));
答案 1 :(得分:-2)
是的,你可以这样做。但是你需要在服务器端解码它,因为它只是作为字符串传输。
使用jQuery,这将非常容易实现:
$.post('https://my_url/comment/id?Id=5', {"number":5,"content":"aaaa"});
你甚至可以通过一个回调来对任何返回的内容做出反应:
$.post('https://my_url/comment/id?Id=5', {"number":5,"content":"aaaa"}, function (response){
// Do something cool here.
});