繁体   English   中英

使用HTML表单时如何在HTTP请求正文中发送数据?

[英]How to send data in the HTTP request body when using an HTML form?

HTTP规范说POST请求可以包含任意数据体。

HTML form元素可以POST到URL并且可以包含input元素,但这些input元素将变为查询字符串。

我如何获得一个form以便在按下提交按钮时发送的HTTP POST请求正文中的数据?

HTTP规范说POST请求可以包含任意数据体。

那是对的。 然而,该数据的格式又有几种规格。 对于HTML表单,最常用的是application/x-www-form-urlencoded ,后跟multipart/form-data 您可以通过HTML <form>元素的enctype属性进行设置。 另请参见第17.13.4节HTML规范的表单内容类型


HTML表单元素可以POST到URL并且可以包含输入元素,但这些输入元素将变为查询字符串。

这确实是application/x-www-form-urlencoded工作方式。 请注意,此查询字符串实际上代表整个HTTP请求正文! 因此,您似乎认为请求正文绝对不是空的。


我如何获得一个表单,以便在按下提交按钮时发送的HTTP POST请求正文中的数据?

因此它实际上已经这样做了。 如果您打算发送表单本身的HTML DOM树表示的副本,如前面的语句中稍微暗示的那样,那么您可以通过JavaScript的一点帮助实现以下目的:

<form onsubmit="this.source.value=this.outerHTML">
    ...
    <input type="hidden" name="source" />
    <input type="submit" />
</form>

然后,表单的整个HTML DOM树表示形式为字符串格式,可用作名称source请求参数。

按下按钮时使用javascript发送ajax请求并取消表单提交。 表单提交将始终是名称/值对。 XForms可以发送自定义数据,但如果这是供公众使用的话,那么在使用的大多数浏览器支持XForms之前还需要几年时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM