доступен ли энтип формы "application/json"?

Я читал этот документ w3c о сообщениях JSON с формой html и пытался проверить его.

моя тестовая форма выглядит следующим образом:

 <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. Смотри мою библиотеку здесь: https://github.com/keithhackbarth/submitAsJSON