PHP JSON-разбор, показывает только один из трех параметров - PullRequest
1 голос
/ 16 сентября 2011

У меня есть HTML-страница, которая отправляет HTTP-запрос POST на страницу php, и в качестве параметра встроен объект JSON.Однако, когда я пытаюсь получить параметры, я могу получить только «пароль» и ничего больше.Я что-то упускаю из разбора JSON в php ??

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

Ответы [ 3 ]

5 голосов
/ 16 сентября 2011

Из того, что я прочитал из PHP Docs , вызов json_decode без assoc param вернет объект, поэтому вам нужно получить доступ к его свойству, например $param->pass $param->username.

Ура!

2 голосов
/ 16 сентября 2011

Филипп прав, вам нужно добавить true в качестве второго параметра в json_decode, чтобы вернуть массив.

$param = json_decode( $_POST['param'], true );

.. вернет json в виде ассоциативного массива и заставит весь ваш код работать как положено.

2 голосов
/ 16 сентября 2011

Это сработало для меня на моем локальном компьютере:

$param = json_decode($_POST['param']);
$username = $param->username;
$pass = $param->pass;
$funny = $param->funny;
echo $pass;
echo $username;
echo $funny;

Разница в том, что я использовал ->, поскольку это объект, а не массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...