PHP で処理する JSON データを POST しようとしています。サーバー側に到着すると、データはエスケープされ、確実にエスケープ解除できません。
var jsondata = '{"name":"Foo","email":"name@address.com"},{"name":"Bar","email":"name@address.com"}';
$.ajax({
type: "POST",
url: "save.php",
dataType: "json",
processData: false,
data: { json: '['+jsondata+']'},
});
$_POST['json']
次に含まれます:
[{\"name\":\"Foo\",\"email\":\"name@address.com\"},{\"name\":\"Foo\",\"email\":\"name@address.com\"}]
エンコードされていない JSON ポストデータを送信するにはどうすればよいですか? 私processData: false
はそれをカバーすると思った。
サーバー側のエラーを説明するには:
<?php
$_POST['json-bad'] = '[{\"name\":\"Foo\",\"email\":\"name@address.com\"},{\"name\":\"Foo\",\"email\":\"name@address.com\"}]';
$data_bad = json_decode($_POST['json-bad']);
var_dump($data_bad); // returns "NULL"
$_POST['json-good'] = '[{"name":"Foo","email":"name@address.com"},{"name":"Bar","email":"name@address.com"}]';
$data_good = json_decode($_POST['json-good']);
var_dump($data_good); // returns array as expected
?>