PHP - 如何读取没有密钥的帖子数据?

时间:2010-10-10 04:28:26

标签: php

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

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

在内部资格中,我必须根据发布数据进行一些处理。但我无法阅读帖子数据。

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

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:4)

你所拥有的应该可以正常工作,但是当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”。换句话说,您还需要遍历该值。如何执行此操作取决于您接收的数据的结构,或者您是否知道它的结构。

答案 2 :(得分:0)

第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);