将 JSON 与传统的表单编码数据发布为提交表单的数据格式

Posted

技术标签:

【中文标题】将 JSON 与传统的表单编码数据发布为提交表单的数据格式【英文标题】:posting JSON vs traditional form encoded data as the data format for submitting a form 【发布时间】:2012-11-12 13:17:52 【问题描述】:

将 JSON 与传统的表单编码作为从 html 表单向服务器提交数据的数据格式。 HTML 表单是动态的,用户可以添加新行(例如)并填写数据。有一个论点是在这种情况下使用带有 MVC 框架的表单字段更容易,因为像 Spring MVC 这样的 MVC 框架负责绑定到表单(在动态生成的 HTML 等中生成 id),我们可以在控制器在使用 AJAX 作为表单编码的内容类型发布表单时收集这些值。

我正在考虑使用 JSON,您的看法是什么?

    使用表单编码格式(传统方式)是更好的选择,还是使用 JSON 作为有效负载?您遇到过哪些利弊? Web 应用程序是否使用 JSON 作为提交表单的数据格式? 我们目前没有与移动应用程序等进行任何集成,那么 JSON 是否值得使用传统表单字段方法?

感谢您的宝贵时间。

【问题讨论】:

【参考方案1】:

1。使用表单字段是更好的选择还是使用 JSON 更好?

你无法比较这个。你可以说,要么是传统的 Submit 更好,要么是 JSON 方式,但你需要做出选择。通过 JSON 提交时,不能发送文件,但需要 AJAX 或类似技术与服务器对话。所以要检查浏览器的兼容性。

2。 Web 应用程序是否使用 JSON 来提交表单?

问题本身是错误的。答案是不,因为大多数表单都是由POST 提交的,并且值是作为序列化发送的,这并不总是意味着 JSON。

3。我们目前没有与移动应用程序等进行任何集成,那么 JSON 是否值得在传统的表单字段方法中使用?

同样,浏览器的兼容性和用户的带宽起着重要作用。如果人们有好的浏览器,那就去吧。

我的建议:

有一套规则和最佳实践可用于设计各种 Web 应用程序。请仔细阅读并处理您的项目。 :)

【讨论】:

使用 JSON 什么时候流量会减少?一个典型的帖子数据可能是name=john&phone=12345,那将是"name":"john","phone":"12345"作为JSON,不少于。 很好... JSON 不支持文件附件。让我更新一下! :) 它可以通过使用 base64 编码支持文件附件,传输大小增加 37%。【参考方案2】:

我建议您坚持使用您正在使用的框架的标准格式。在性能、安全性和可靠性方面,开发您的框架的人员通常会比您开发此类基础设施做得更好。

这篇文章Normal form submission vs. JSON对基本表单提交与JSON提交的话题进行了一些讨论。我同意的一点是,当您开始研究复杂的数据结构时,结构化格式而不是平面格式可能会非常有利。也就是说,正如您自己所说,Spring MVC 和其他类似框架负责绑定。对我来说,这是 JSON 比标准表单提交做得更好的一件事。如果框架默认处理它,请坚持使用默认值。不要在不必要的地方增加复杂性。

【讨论】:

【参考方案3】:

你有什么特别的理由要发布 JSON 吗?

如果不是,那么我会说默认选择是发布表单数据,因为所有浏览器和所有服务器都原生支持。您可以在没有任何客户端脚本的情况下发布表单数据,并且默认情况下任何服务器实现都会处理它。

【讨论】:

我们不想重新加载页面。数据必须异步 POST'ed。所以它将是 AJAX,但问题是,是使用默认的表单提交方法更好,还是应该使用 JSON 对有效负载进行编码以及采用哪种方式的优缺点。 @voicestreams:那么它在客户端并没有太大的不同,因为所有浏览器都原生支持这两种编码方式,但服务器端的情况保持不变。【参考方案4】:

更新。看看http://www.w3.org/TR/html-json-forms/

但是“当心。该规范不再处于积极维护中,HTML 工作组不打算进一步维护它。”。

【讨论】:

【参考方案5】:

使用表单字段是更好的选择还是使用 JSON 更好?

您正在将苹果与锤子进行比较。 JSON 是数据格式,而表单是数据源。可以在 HTML 表单字段中发送 JSON 数据,所以这个问题有点奇怪。

Web 应用程序是否使用 JSON 来提交表单?

HTML 表单?没有

我们目前没有与移动应用程序等进行任何集成,那么 JSON 是否值得在传统的表单字段方法中使用?

再次阅读 - 了解您想要使用的技术。这有助于理解它是什么。不要在获得基础知识之前开始实施,否则您会浪费时间“重构”您的项目。从头开始...

【讨论】:

以上是关于将 JSON 与传统的表单编码数据发布为提交表单的数据格式的主要内容,如果未能解决你的问题,请参考以下文章

json数据重组

Vue表单form数据转化为Json字符串

Ajax提交与传统表单提交的区别说明

使用本机数据类型将表单输入自动编码为 JSON

Django CBV 表单提交返回 JSON 显示为新页面

java jsp 中 表单用 get 提交 怎样解决中文乱码问题?