![]() | 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 yemoluo 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 下,或者断点下 |
![]() | 16 O3YwA1ENkb7i35XJ 2016-04-20 10:04:29 +08:00 @lyp111332 无码无真相,请提供你提交数据至后端的 JS 代码,以及你后端的 php 代码. |
![]() | 17 sfree2005 2016-04-20 10:25:00 +08:00 试下这个: json_decode(urldecode($_POST['data']),true); |
![]() | 18 O3YwA1ENkb7i35XJ 2016-04-20 10:32:16 +08:00 @lyp111332 根据你的描述做了一个简单的 Demo, 没发现有什么不能输出的. Demo: https://xqin.net/temp/json_test.html html 代码: ``` <script src="http://www.v2ex.com//js.xqin.net/jquery-1.7.1.min.js" type="text/Javascript"></script> <script src="http://www.v2ex.com//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 PRO ![]() 楼上各位,我好想看明白楼主的脑袋里想啥了 看到了这段代码: 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 ![]() 这种简单的问题建议大家不要浪费时间。第一个楼主问题描述能力不够,第二个基础太差还没有学会走路就想跑。 |