доступен ли энтип формы "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