【问题标题】:PHP - How to read post data with no key?PHP - 如何在没有密钥的情况下读取发布数据?
【发布时间】:2010-10-10 04:28:25
【问题描述】:

这段 jQuery 代码发布到我们的一个 php 页面。

var json = '{"object1":{"object2":[{"string1":val1,"string2":val2}]}}';
$.post("phppage", json, function(data) {
    alert(data);
});

在phppage里面,我要根据post数据做一些处理。但我无法读取帖子数据。

foreach ($_POST as $k => $v) {
    echo ' Key= ' . $k . ' Value= ' . $v;
}

【问题讨论】:

    标签: php


    【解决方案1】:

    在不使用key=value 对时,使用file_get_contents("php://input") 捕获脚本接收到的数据。这种方法在 jsonrpc API 中很常见。

    【讨论】:

      【解决方案2】:

      您所拥有的应该可以正常工作,但是当 JSON 对象提供给 POST 数据时,它会变成一个数组数组。你会得到这样的东西:

      ["object1"]=>
        array(1) {
          ["object2"]=>
          array(1) {
            [0]=>
            array(2) {
              ["string1"]=>
              string(4) "val1"
              ["string2"]=>
              string(4) "val2"
            }
          }
        }
      }
      

      所以 object1 是一个包含所有其他数据的数组。如果你这样做了

      foreach ($_POST as $key => $val) {
         echo $key . " > " . $val
      }
      

      它打印出“object1 > Array”。换句话说,您还需要遍历该值。您如何执行此操作取决于您收到的数据的结构,或者您是否知道它的结构。

      【讨论】:

        【解决方案3】:

        第 1 步(Javascript 代码):

        代替:

        $.post("phppage", json, function(data) {
            alert(data);
        });
        

        制作:

        $.post("phppage", 'json':json, function(data) {
            alert(data);
        });
        

        第 2 步(PHP 代码):

        改为:

        $json=json_decode($_POST['json']);
        foreach($json as $k => $v) {
          echo ' Key= ' . $k . ' Value= ' . $v;
        }
        

        或:

        $json=json_decode($_POST['json']);
        print_r($json);
        

        【讨论】:

          猜你喜欢
          • 2016-12-01
          • 2020-02-17
          • 2014-02-20
          • 2017-10-03
          • 1970-01-01
          • 2020-12-25
          • 1970-01-01
          • 2019-11-16
          • 1970-01-01
          相关资源
          最近更新 更多