Chrome のバックエンド ネットワークを使用して、JQuery の $.ajax() を通じて JSON データを PHP にポストするときのいくつかの状況を分析しました。
注:
PHP の $_POST および $_REQUEST を介して json データを取得することはできません、つまり リーリー
PHP は、デフォルトでは application/x-www.form-urlencoded の標準データ型のみを認識します。そのため、$ _POST 配列を使用する場合、text/xml、soap、application/octet-stream などのコンテンツは解析できません。受信できなくなります。
ケースA:
js には
追加された属性 contentType: "application/json; charset=utf-8",はありません。 リーリー
$GLOBALS['HTTP_RAW_POST_DATA'] を使用した後、
データを取得できません、つまりfile_get_contents("php://input") を使用すると、
- リーリー
データを取得できます
- リーリー
状況 B:属性 contentType を js に追加します: "application/json; charset=utf-8",
リーリー リーリー
$GLOBALS['HTTP_RAW_POST_DATA'] を使用した後、
データを取得できます、つまり
リーリー
- file_get_contents("php://input") を使用すると、
データを取得できますリーリー
- 注: php://input を使用すると、POST の生データを読み取ることができます。 $HTTP_RAW_POST_DATA よりもメモリへの負担が少なく、特別な php.ini 設定は必要ありません。 php://input は enctype="multipart/form-data" では使用できません。
ケースC:以下に参加しませんか リーリー
ケースAとケースBの結果には影響しません。
バージョン 5.2 以降、PHP は json_encode() 関数と json_decode() 関数をネイティブに提供し、前者はエンコードに使用され、後者はデコードに使用されます。以下のブログがとても詳しく書かれています、マーク!
PHP 言語での JSON の使用: http://www.ruanyifeng.com/blog/2011/01/json_in_php.html
上記では、[PHP] JSON 値の転送と PHP 受信のいくつかの状況を、関連する内容も含めて紹介しました。PHP チュートリアルに興味のある友人の参考になれば幸いです。