关于php接收post的json数据

qq_37676008 2018-05-29 08:07:34
各位大神~最近在用php接收post的json数据出了些问题。post到服务器的json数据
data={"id":"00f92a92","data":[{"mac":"80:41:26:d1:59:34","rssi":"-47","router":"CMCC-332D","range":"2.1"}]}
然后在后台中php


之后php页面没有接收到json数据


请教各位大神是哪出了问题呀?
另外在用端口测试时,前段的确传过来值
...全文
1828 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
coding8424 2018-07-24
  • 打赏
  • 举报
回复
哈哈,突然看到,你的串口发送端口是5000,但是你的php服务端监听端口一般是80或者8080,数据应该到不了你的服务端。改成80或者8080试试。
Lyndon1115 2018-07-21
  • 打赏
  • 举报
回复
引用 11 楼 donglynn 的回复:
首先,加个参数r试试,改成file_get_contents("php://input", "r")

其次,前端发送数据用php://input获取的话,需要注意不同类型的值加上不同的http头,比如,发送xml文件,加Content-type: text/xml;发送文件,加application/x-www-form-urlencoded。

具体参考这里:https://www.bugshoot.cn/thread-5649202.htm

另外,1.php://input无法读取enctype=multipart/form-data数据。只有Coentent-Type不为multipart/form-data的时候,PHP不会将http请求数据包中的相应数据填入php://input,否则其它情况都会。填入的长度,由Coentent-Length指定。 2.仅当Content-Type为application/x-www-form-urlencoded且提交方法是POST方法时,$_POST数据与php://input数据才是”一致”(打上引号,表示它们格式不一致,内容一致)的。其它情况,它们都不一致。 3.php://input读取不到$_GET数据。是因为$_GET数据作为query_path写在http请求头部(header)的PATH字段,而不是写在http请求的body部分。 4.php://input数据总是跟$HTTP_RAW_POST_DATA相同,但是php://input比$HTTP_RAW_POST_DATA更凑效,且不需要特殊设置php.ini 5.PHP会将PATH字段的query_path部分,填入全局变量$_GET。通常情况下,GET方法提交的http请求,body为空。
Lyndon1115 2018-07-21
  • 打赏
  • 举报
回复
首先,加个参数r试试,改成file_get_contents("php://input", "r")

其次,前端发送数据用php://input获取的话,需要注意不同类型的值加上不同的http头,比如,发送xml文件,加Content-type: text/xml;发送文件,加application/x-www-form-urlencoded。

具体参考这里:https://www.bugshoot.cn/thread-5649202.htm
zzywjing 2018-07-20
  • 打赏
  • 举报
回复
应该是用input 的方式接收吧
qq_29736125 2018-06-23
  • 打赏
  • 举报
回复
php设置跨域访问的header
智商众筹 2018-06-22
  • 打赏
  • 举报
回复
上面回答可能都没有注意php://input,楼主的测试代码没有问题
修改一下发包代码试试:
content-type改成app.../json
expect: 100... 去掉
MW_long 2018-06-14
  • 打赏
  • 举报
回复
json_decode, 添加第二个参数true,会转成数组 你的代码没有第二个参数, 则使用对象提取
雨之哀伤 2018-06-14
  • 打赏
  • 举报
回复
1.浏览器审查一下看看是否提交。 2.一句话就可以搞定的最好不好写这么多行。 接值:$_POST(参数); 如果转json就 $data = json_decode($_POST(参数));
何牧晗 2018-06-04
  • 打赏
  • 举报
回复
$data = $_POST; var_dump($data); 用这个接收POST参数,打印看看
xuzuning 2018-05-30
  • 打赏
  • 举报
回复
截图2 明显没有数据被提交
qq_37676008 2018-05-30
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning的回复:
截图2 明显没有数据被提交
可是我用串口调试,客户端的确post过来数据了呢,不知道为什么在php中接收不到
qq_37676008 2018-05-30
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning的回复:
php 输出的内容只能被发送者接收
你好~我在服务器端的php接收代码中想确认有没有接收到数据,所以用了var dump。但是显示的是空的串。 另外,我也用httpdebuger调试过,用写好的数据post过去,最终var dump能打印出数据。
xuzuning 2018-05-30
  • 打赏
  • 举报
回复
php 输出的内容只能被发送者接收

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧