各位大神~最近在用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数据
请教各位大神是哪出了问题呀?
另外在用端口测试时,前段的确传过来值

解决方案 »

  1.   

    php 输出的内容只能被发送者接收
      

  2.   

    你好~我在服务器端的php接收代码中想确认有没有接收到数据,所以用了var dump。但是显示的是空的串。
    另外,我也用httpdebuger调试过,用写好的数据post过去,最终var dump能打印出数据。
      

  3.   

    可是我用串口调试,客户端的确post过来数据了呢,不知道为什么在php中接收不到
      

  4.   

    $data = $_POST;
    var_dump($data);
    用这个接收POST参数,打印看看
      

  5.   

    1.浏览器审查一下看看是否提交。
    2.一句话就可以搞定的最好不好写这么多行。
    接值:$_POST(参数);
    如果转json就  $data = json_decode($_POST(参数));
      

  6.   

    json_decode, 添加第二个参数true,会转成数组
    你的代码没有第二个参数, 则使用对象提取
      

  7.   

    上面回答可能都没有注意php://input,楼主的测试代码没有问题
    修改一下发包代码试试:
    content-type改成app.../json
    expect: 100... 去掉
      

  8.   

    php设置跨域访问的header
      

  9.   

    应该是用input 的方式接收吧
      

  10.   

    首先,加个参数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
      

  11.   

    另外,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为空。
      

  12.   

    哈哈,突然看到,你的串口发送端口是5000,但是你的php服务端监听端口一般是80或者8080,数据应该到不了你的服务端。改成80或者8080试试。