表格 enctype "application/json" 可用吗?

Posted

技术标签:

【中文标题】表格 enctype "application/json" 可用吗?【英文标题】:is form enctype "application/json" available? 【发布时间】:2016-10-27 07:02:15 【问题描述】:

我正在阅读这个w3c document,关于使用 html 表单发布 JSON 数据,并尝试对其进行测试。

我的测试表格如下:

 <form action="postjson.php" method="POST" enctype="application/json">
    <input type="hidden" name="touser" value="shenkwen" />
    <input type="hidden" name="msgtype" value="text" />
    <input type="hidden" name="agentid" value="23" />
    <input type="hidden" name="text[content]" value="test message" />
    <input type='submit' value="submit" />
  </form>

postjson.php的内容

<?php var_dump($_POST); 

我期待 $_POST 的值是一个 JSON 字符串,然而,它只是一个普通的 PHP 对象:

array(4)  ["touser"]=> string(8) "shenkwen" ["msgtype"]=> string(4) "text" ["agentid"]=> string(2) "23" ["text"]=> array(1)  ["content"]=> string(33) "test message"  

我尝试删除enctype 属性并且输出完全相同。然后我回到文档页面,发现上面写着这个标准可能没有生效。

所以这也是一个关于如何使用W3C网站的问题,在我看来它的一些页面只是草稿。那么这个页面是草稿吗?当我阅读有关 w3c 的页面时,我如何判断它是草案还是工作标准?最后也是最重要的一点,enctype='application/json' 是否有效?

【问题讨论】:

【参考方案1】:

W3C 发布了许多草案和提案,然后在整个社区内进行讨论。如果草稿达到通常被认为有用的阶段,浏览器供应商将/可能开始实施它。然后,草案通常会进入“推荐”阶段,这意味着 W3C 正式建议浏览器按照规定实现该技术;但他们当然不能真正扭转任何人的手臂。

每个文档都会在其顶部显示其当前状态,http://www.w3.org/TR/ 列出所有当前文档及其状态。您选择的那个在该页面上被列为“过时”和“退休”,并且在其顶部有一个巨大的横幅,上面写着:

小心。该规范不再处于积极维护中,HTML 工作组也不打算进一步维护它。

所以,不,目前可能没有浏览器正在实现它。

要跟踪某个功能的实际可用性,您需要查看第三方资源,例如 https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-enctype 和 http://caniuse.com。

【讨论】:

【参考方案2】:

仅供参考.. 有一种使用 javascript 模仿此功能的 hacky 方法。在这里查看我的图书馆:https://github.com/keithhackbarth/submitAsJSON

【讨论】:

以上是关于表格 enctype "application/json" 可用吗?的主要内容,如果未能解决你的问题,请参考以下文章

知识积累

method="post" enctype="text/plain" 不兼容?

C# form表单提交enctype="multipart/form-data" 与 enctype="application/x-www-form-urlencoded

form   中 enctype="multipart/form-data" 作用

form表单中enctype="multipart/form-data"的传值问题

表单的enctype="multipart/form-data"