我有一个html页面,它将HTTP POST发送到php页面,并嵌入了一个JSON对象作为参数。但是,当我尝试检索参数时,我只能检索“传递”而不能检索其他内容。我错过了在php中解析JSON的一些内容吗?
html POST表单:
<form method="POST" action="......../username_exist.php" >
<input type="hidden" name="param" value='{"username":"user123","pass":"147852369qwerfdsazxcv","funny":"funny"}' />
<input type="submit" value="Click Me to submit" />
</form>
和php页面:
$param = json_decode($_POST['param']);
$username = $param['username'];
$pass = $param['pass'];
$funny = $param['funny'];
echo $pass;
echo $username;
echo $funny;
给出结果:
147852369qwerfdsazxcv
答案 0 :(得分:5)
根据我从PHP Docs读到的内容,在没有 json_decode
param的情况下调用assoc
将返回一个对象,因此您需要访问其属性,如{ {1}},$param->pass
。
干杯!
答案 1 :(得分:2)
这对我当地人有用:
$param = json_decode($_POST['param']);
$username = $param->username;
$pass = $param->pass;
$funny = $param->funny;
echo $pass;
echo $username;
echo $funny;
不同之处在于我使用了->
,因为它是一个对象,而不是一个数组。
答案 2 :(得分:2)
Philip是对的,您需要将true作为第二个参数添加到json_decode以获取数组。
$param = json_decode( $_POST['param'], true );
..将json作为关联数组返回,并使其余代码按预期工作。