私はこれを読んでいた 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 Webサイトの使用方法に関する質問でもあり、そのページの一部はドラフトにすぎないようです。このページはドラフトですか? w3cのページを読むとき、ドラフトであるか、それが作業標準であるかをどのように見分けるのですか?そして最後に、そして最も重要なことは、enctype='application/json'
が機能しているかどうかです。
W3Cは多くのドラフトと提案を公開しており、コミュニティ全体で議論されています。ドラフトが一般的に有用と考えられる段階に達すると、ブラウザベンダーは実装を開始する可能性があります。通常、ドラフトは「推奨」段階に進みます。つまり、W3Cは、ブラウザーが指定されたとおりにテクノロジーを実装することを公式に推奨することを意味します。もちろん、実際にそうするために誰かの腕をねじることはできません。
各ドキュメントの上部に現在のステータスが表示され、 http://www.w3.org/TR/ はすべての現在のドキュメントとそのステータスをリストします。あなたが選んだものは、そのページで「廃止」および「廃止」としてリストされ、その上部に巨大なバナーがあります:
気をつけて。この仕様は現在アクティブなメンテナンスではなく、HTMLワーキンググループはそれをさらにメンテナンスするつもりはありません。
だから、いや、おそらくそれを実装しているブラウザはおそらくない。
機能の実際の可用性を追跡するには、 https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-enctypeのようなサードパーティのリソースを調べる必要があります および http://caniuse.com 。
参考までに、javascriptを使用してこの機能を模倣するハックな方法があります。私のライブラリはここにあるようです: https://github.com/keithhackbarth/submitAsJSON