重複の可能性:
PHP で json リクエストを処理する
以下:
$.ajax({
type: 'POST',
url: 'receive-json.php',
contentType: 'application/json; charset=UTF-8',
data: '{"phpJSON":' + JSON.stringify(myJSON) + '}',
success: function(data){},
dataType: 'json'
});
これを純粋な JSON としてサーバーに送信します。
{"phpJSON":[{"id":"1","user":"foo","colour":"red"},{"id":"2","user":"bar","colour":"green"},{"id":"3","user":"baz","colour":"blue"}]}
しかし、PHPはそれを認識しません。その代わりに、.ajax() 呼び出し ( data: {"phpJSON":' + JSON.stringify(myJSON) + '}
) のデータ値の前後から一重引用符を削除して、(文字列ではなく) オブジェクトになり、代わりにこれがサーバーに送信されるようにしました。
phpJSON%5B0%5D%5Bid%5D=1&data%5B0%5D%5Buser%5D=foo&data%5B0%5D%5Bcolour%5D=red&data%5B1%5D%5Bid%5D=2&data%5B1%5D%5Buser%5D=bar&data%5B1%5D%5Bcolour%5D=green&data%5B2%5D%5Bid%5D=3&data%5B2%5D%5Buser%5D=baz&data%5B2%5D%5Bcolour%5D=blue
これは完全に正常に動作します。PHP はそれを認識します$_POST['phpJSON']
が、ここで述べたように、これは冗長であり (特に大量のデータを送信する場合)、POST は他のコンテンツ タイプをサポートする必要があるため、必要ありません。これを回避する方法はありますか? PHP は 以外のコンテンツ タイプを受け取ることができますapplication/x-www-form-urlencoded
か?