可能重复:
在 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 可以接收其他 Content-Typesapplication/x-www-form-urlencoded
吗?