Can't sent json data to server with POST request
我尝试将JSON数据发送到服务器(使用fetch api和php作为服务器端语言)。我的服务器端代码非常简单:
1 2 3 4 5 6 7 | <?php header("Access-Control-Allow-Origin: *"); header("Access-Control-Allow-Methods: PUT, GET, POST"); header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept"); print_r($_POST); ?> |
现在,当我向
1 2 3 4 5 6 7 8 9 10 11 12 13 | fetch("http://localhost:80/test.php", { method: 'POST', headers: { "Content-type":"application/x-www-form-urlencoded; charset=UTF-8" }, body:"a=b" }) .then(function(response){ return response.text(); }) .then(function(text){ console.log(text); }) |
号
一切正常,输出为:
1 2 3 4 | Array ( [a] => b ) |
现在,当我想发送相同的东西,但使用JSON时,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 | fetch("http://localhost:80/test.php", { method: 'POST', headers: { "Content-type":"application/x-www-form-urlencoded; charset=UTF-8" }, body: JSON.stringify({"a":"b"}) }) .then(function(response){ return response.text(); }) .then(function(text){ console.log(text); }) |
。
我得到了整个数组的奇怪输出作为一个键:
1 2 3 4 | Array ( [{"a":"b"}] => ) |
现在,当我在fetch调用中将内容类型更改为:
1 2 3 | Array ( ) |
。
你能告诉我原因是什么吗?以及如何达到预期的结果。(使用JSON发送整个数据)。
您的代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 | fetch("http://localhost:80/test.php", { method: 'POST', headers: { "Content-type":"application/x-www-form-urlencoded; charset=UTF-8" }, body: JSON.stringify({"a":"b"}) }) .then(function(response){ return response.text(); }) .then(function(text){ console.log(text); }) |
应写为:
1 2 3 4 5 6 7 8 9 10 11 12 13 | fetch("http://localhost:80/test.php", { method: 'POST', headers: { "Content-type":"application/x-www-form-urlencoded; charset=UTF-8" }, body: {"a":"b"} }) .then(function(response){ return response.text(); }) .then(function(text){ console.log(text); }) |
。
注:
将内容类型设置为
1 2 3 4 5 | fetch('http://localhost:80/test.php', { method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({a: 'b'}) }); |
服务器端应该能够解码(没有没有没有没有表单的post字段的
1 2 | $array = json_decode(file_get_contents('php://input')); echo '[cc lang="javascript"]'.print_r($array, true).' |
号;
1 | <P><wyn>test.php</wyn>应该与json一起发送一个内容类型的头文件:</P>[cc lang="javascript"]header('Content-type: application/json; charset=utf-8'); |
。
您的JSON应该是:
然后在PHP中:江户十一〔一〕号
直到您对JSON进行解码,PHP才理解它。