2014-11-01 3 views
0

Я использую sencha touch, и я отправляю данные на сервер php REST, чтобы сохранить его в базе данных, в firebug Я могу видеть параметры, которые sencha touch посылают на php, но в php I этот код:PHP POST метод json_decode return NULL

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"}" 
    } 

I не знаю, как продолжить, перед var_dump сообщение содержит:

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

Я попытался stripslashes, но я также NULL ...

Любая идея ...

+0

Можете ли вы сделать 'var_dump ($ _ POST);' или 'var_dump ($ _ GET)', если метод GET? Вероятно, это дает вам прямой доступ к тому, что вам нужно. – jeroen

+0

Я получил этот var_dump ($ _ POST): array (1) {["customers"] => string (50) "{" c_name ":" test "," c_tel ":" 08-05852821 "," id ": "112"} " } – user2005049

+0

Как я могу получить доступ к« c_name »? – user2005049

ответ

1

Основываясь на ваш комментарий, я бы доступ к $_POST непосредственно:

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

Работает !!! но во всех моих поисках в google я видел использование file_get_contents («php: // input»). – user2005049

+0

Я действительно хочу понять проблему и решение, я следил за учебным шагом, выполняющим шаг php REST на стороне сервера, и они используют file_get_contents («php: // input»)?! – user2005049

+1

@ user2005049 Удивительно, что при отправке пар-форм или ключей-значений с помощью ajax - использование глобальных переменных '$ _POST' и' $ _GET' - почти всегда самый простой способ доступа к вашим данным, см., Например, http: //php.net/manual/en/tutorial.forms.php. – jeroen

0

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

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

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