Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Проблема с декодированием JSON от store на стороне сервера (https://javascript.ru/forum/extjs/20944-problema-s-dekodirovaniem-json-ot-store-na-storone-servera.html)

Allan Stark 23.08.2011 15:14

Проблема с декодированием JSON от store на стороне сервера
 
ExtJS 4.0.2a, PHP 5.3.6, LAMP

При использовании фильтрации стореджа на стороне сервера (метод filter()) сценарий отсылает в поле JSON кодированные данные фильтрации.

Выглядят они примерно как:

[{"property":"code_1","value":1},{"property":"code_ 2","value":7},{"property":"code_3","value":4}]

Вопрос. Как разобрать такое на стороне PHP ?
Не получается достучаться к свойствам value ни при декодировании в объект, ни в массив.
В примерах к json_decode используется либо совсем тривиальный случай, либо когда в JSON массив находится внутри уже в виде значения...

B@rmaley.e><e 23.08.2011 15:15

var_export(json_decode(…))
Что выводит?

Allan Stark 23.08.2011 15:40

var_export(json_decode($_GET["filter"], true));

Выводит:

array (
0 =>
array (
'property' => 'code_1',
'value' => 1,
),
1 =>
array (
'property' => 'code_2',
'value' => 7,
),
2 =>
array (
'property' => 'code_3',
'value' => 4,
),
)

Кстати обнаружил не то баг, не то фичу удаленной фильтрации в ExtJS 4:
http://www.sencha.com/forum/showthre...765#post639765

Вкратце: если к созданному стореджу несколько раз применять вызов его метода filter(), то старый фильтр не затирается, а "добавляется" к новому. Метод clearFilter() лечит проблему, но порождает лишний нефильтрованный запрос, что вкупе с большим возможным количеством нефильтрованных данных может ввести в ступор приложение...

B@rmaley.e><e 23.08.2011 15:45

$data = json_decode($_GET["filter"], true);
echo $data[0]['value']
Должно работать.

Allan Stark 23.08.2011 16:56

Работает, пасиба.


Часовой пояс GMT +3, время: 20:38.