1
zztao 2016-04-20 09:06:32 +08:00
$_POST 接受到的参数不是 application/json, 而是 url-encode 。打印可以啊,不过你要变为 json 的话得注意 json_decode 的第二个参数。默认 false 解析为 Object , true 解析为 Array
|
2
lyp111332 OP @zztao 打印不了,客户端那边传过来没有键值对,我这里根本无法打印$_POST[]也就是方括号里面的值不知道是什么, 直接 echo $_POST 也无法打印
|
5
GTim 2016-04-20 09:19:37 +08:00
`file_get_contents('php://input', 'r');`
|
6
qgy18 2016-04-20 09:29:37 +08:00 via iPhone
你可以看下这个:
https://imququ.com/post/four-ways-to-post-data-in-http.html 但也有些服务端语言还没有支持这种方式,例如 php 就无法通过 $_POST 对象从上面的请求中获得内容。这时候,需要自己动手处理下:在请求头中 Content-Type 为 application/json 时,从 php://input 里获得原始输入流,再 json_decode 成对象。一些 php 框架已经开始这么做了。 |
7
lyp111332 OP |
8
Delbert 2016-04-20 09:41:39 +08:00 via Android
dump 呢?
|
10
qgy18 2016-04-20 09:45:38 +08:00 via iPhone
抓包看请求有响应没。
网页不显示,不一定是没数据,如果用 jquery 一类的 ajax 发请求,响应的 content-type 不对也不解析。 |
12
server 2016-04-20 09:48:21 +08:00
content-type 问题, php post 只处理 application/x-www-form-urlencoded 。可以参看 laravel yii restful 实现方案。
|
14
tagtag 2016-04-20 09:58:25 +08:00
没太明白你说的意思,他调你因为他给你 post 了,所以他能看到你的 echo ,你自己运行自己代码没传参数,所以啥都没有,不正常吗?
|
15
tagtag 2016-04-20 09:59:19 +08:00
他调你的时候你 error_log 下,或者断点下
|
17
sfree2005 2016-04-20 10:25:00 +08:00
试下这个: json_decode(urldecode($_POST['data']),true);
|
18
xqin 2016-04-20 10:32:16 +08:00
@lyp111332 根据你的描述做了一个简单的 Demo, 没发现有什么不能输出的.
Demo: https://xqin.net/temp/json_test.html html 代码: ``` <script src="//js.xqin.net/jquery-1.7.1.min.js" type="text/javascript"></script> <script src="//js.xqin.net/jquery.json-2.3.min.js" type="text/javascript"></script> <script type="text/javascript"> $.ajax('json_test.php', { type: 'POST',//POST contentType : 'application/json',//发送 JSON 格式的数据 data: $.toJSON({t: Math.random()}),// $.toJSON 在 jquery.json 中定义 success: function(v){ alert(v);//输出服务器返回的内容 } }); </script> ``` php 代码 ``` <?php echo file_get_contents('php://input'); ``` |
19
laoyuan 2016-04-20 10:40:07 +08:00
基本上,我有点看明白了, LZ 一次请求,想在两个地方看到。
|
20
b821025551b 2016-04-20 11:05:49 +08:00
贴码吧,这样我们怎么猜
|
21
msxcms 2016-04-20 11:13:59 +08:00
Content-Type:application/x-www-form-urlencoded
|
22
realpg 2016-04-20 11:35:23 +08:00 2
楼上各位,我好想看明白楼主的脑袋里想啥了
看到了这段代码: echo $_POST ,我觉得首先就不能把事儿想复杂了 看来看去感觉是这样的: 楼主写了个: http://www.demo.com/recieve.php 然后他有一个客户端(json,app,服务器推送之类),往 http://www.demo.com/recieve.php POST 了一个 json 参数,然后 recieve.php 会返回一个响应内容给客户端,但是应该是这个协议出了啥问题跟他设想的不一样,他想看这个通信的记录 于是他用浏览器打开了 http://www.demo.com/recieve.php 为啥不显示之前通信的内容呢…… |
23
qq316107934 2016-04-20 12:05:51 +08:00 via Android
@realpg 我也这么觉得...
|
24
kiwi95 2016-04-20 12:08:12 +08:00
楼主根本没有懂 POST 的流程,都是自己在猜吧,仔细看看 php 的文档: http://php.net/manual/zh/reserved.variables.post.php
|
25
qdpoboy 2016-04-20 12:59:54 +08:00
是在黑 php 嘛 -_-
|
26
Slienc7 2016-04-20 14:15:15 +08:00 via Android
|
27
lyp111332 OP |
30
wudanyang 2016-04-20 15:34:20 +08:00
|
31
KomeijiSatori 2016-04-20 17:49:59 +08:00 via Android
@lyp111332 先检查一下是不是客户端问题......?
|
32
POPOEVER 2016-04-20 17:57:01 +08:00
这个乱哟,贴码吧,省得大家陪你瞎猜
|
33
chairuosen 2016-04-20 18:23:12 +08:00
遇到这种说不清的问题,搭建一个能复现问题的最小 demo ,大家都省事
|
34
audi 2016-04-20 18:25:40 +08:00 via iPhone 1
这种简单的问题建议大家不要浪费时间。第一个楼主问题描述能力不够,第二个基础太差还没有学会走路就想跑。
|