【问题标题】:How do I submit a JSON encoded post request from an HTML form?如何从 HTML 表单提交 JSON 编码的发布请求?
【发布时间】:2017-02-28 17:56:33
【问题描述】:

目前我正在尝试向我拥有的服务器发送一个发布请求,该服务器配置为仅接受 JSON 数据。

不幸的是,当我通过浏览器的开发人员控制台检查发布请求时,它发送的数据不是编码为 JSON,而是编码为 url,因此响应类型为 415,因为预期类型和提供的类型之间存在差异数据。

形式:

<form action='http://myhost.elasticbeanstalk.com/API/Beta/Register' method = 'post' enctype='application/json'>
 Email: *<br>
 <input  type='text' name='Email' style='width: 500px;'  value='{"Email":"test@gmail.com"}'><br>
<br>
(Fields denoted with * are mandatory)
<br>
<input type='submit' value='Apply' style='float: right;'>
</form>

如您所见,理论上我应该发送内容类型为 json 的请求,但是如果您检查发送的请求,您会看到内容类型仍然是编码的 url,但标签“enctype='application /json'" 应该可以解决这个问题,除非我弄错了。
(像往常一样,imgur 目前已关闭,因此我会尽可能将此图片更改为更永久的链接)
https://puu.sh/unXtf/2610742d2f.png

我错过了什么吗?

【问题讨论】:

  • {"Email":"test@gmail.com"} 应该只是 test@gmail.com
  • 这不是当前的问题,因为问题是它没有被编码为 json。如果您将其更改为原始文本而不是 json 格式的字符串,它仍然是 url 编码的,这是一个问题。一旦我解决了这个问题,我显然需要稍微更改它,但是由于服务器需要 json 并且它正在接收 url 编码的数据,这就是导致 415 错误的原因。

标签: html json


【解决方案1】:

浏览器本身不支持 JSON 作为 HTML 的媒体类型。使用 XMLHttpRequest/Ajax 以 JSON 格式提交表单。使用 jQuery 的虚拟示例:

$.ajax({
          url: 'http://yoururl',
          type: 'POST',
          data: yourFormDataSearilized
          contentType: 'application/json', // this is what you want
          success: function() {
            // check
          }
    });

【讨论】:

  • 不幸的是,因为这是使用一个基本的网页构建器,所以我可以在实际网站正在开发时拥有一个临时页面,我没有能够使用这样的东西的奢侈。但是,在这种情况下,我现在将求助于另一种不依赖 JSON 的方法。谢谢。
猜你喜欢
  • 1970-01-01
  • 2010-09-13
  • 2020-07-21
  • 2021-09-06
  • 1970-01-01
  • 2010-09-12
  • 1970-01-01
  • 1970-01-01
  • 2015-02-26
相关资源
最近更新 更多