json — метод PHP POST json_decode возвращает NULL

Я использую sencha touch и отправляю данные на php REST сервер, чтобы сохранить их в базе данных, в firebug я вижу параметры, которые sencha touch отправляет на php, но в php у меня есть такой код:

parse_str(file_get_contents("php://input"),$post_vars);
$info=$post_vars['customers'];
$data=json_decode(stripslashes($info),true);

Json_decode возвращает NULL, get_magic_quotes_gpc выключен. Я также пробовал utf8_encode, но всегда получал NULL, пробовал var_dump и в ответ получал дополнительный текст:

    array(1) {
["customers"]=>
string(50) "{"c_name":"test","c_tel":"08-05852821","id":"112"}"}

Я не знаю, как продолжить, прежде чем var_dump пост содержит:

{"success":{"customers":"{\"c_name\":\"test\",\"c_tel\":\"08-05852821\",\"id\":\"112\"}"}}

Я попробовал стрип-слэш, но я также получил NULL …

Любая идея…

0

Решение

На основании вашего комментария я бы получил доступ $_POST непосредственно:

$info = json_decode($_POST['customers'], true);
echo $info['c_name'];
1

Другие решения

Есть три варианта передачи Джейсона.

  • Во-первых, это может быть переменная get с именем (index.php?data={success:true}), это работает только для коротких строк json.
  • Во-вторых, это может быть переменная записи с именем (будет отправлено как x-www-form-urlencoded)
  • В-третьих, вы можете публиковать только json (Store.sync делает это)

Только последние будут доступны через php://InputКажется, вы используете Второе.

0

По вопросам рекламы [email protected]