Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: json_decode возвращает NULL

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Уже несколько часов борюсь...
lamozavrik
Отправлено: 25 Июня, 2012 - 13:20:33
Post Id



Частый гость


Покинул форум
Сообщений всего: 161
Дата рег-ции: Дек. 2011  


Помог: 4 раз(а)




Привет всем! Помогите разобраться пожалуйста...
С javascript'а приходит такая строка в формате JSON:
Цитата:
{"return_date_creation":"2012-06-25 13-17-56","package_id":"48","barcode":"PC120000489DE","return_cost":"295.00","reason_id":"3","docs":[null,1,1,1,1,1],"crm":0,"comment":"","customer_id":"258"}

Прогоняю её через json_decode(), но он мне возвращает NULL.
Через echo строка выводится. Если в наглую эту же строку пропишу в скрипте, то тогда все норм...
В чем может быть проблема?


-----
Ударим крепким сном по мукам совести!
 
 Top
EuGen Администратор
Отправлено: 25 Июня, 2012 - 13:27:45
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Достаточно странно:
PHP:
скопировать код в буфер обмена
  1. var_dump(json_decode('{"return_date_creation":"2012-06-25 13-17-56","package_id":"48","barcode":"PC120000489DE","return_cost":"295.00","reason_id":"3","docs":[null,1,1,1,1,1],"crm":0,"comment":"","customer_id":"258"}'));

:
CODE (htmlphp):
скопировать код в буфер обмена
  1. object(stdClass)#1 (9) {
  2.  ["return_date_creation"]=>
  3.   string(19) "2012-06-25 13-17-56"
  4.   ["package_id"]=>
  5.   string(2) "48"
  6.   ["barcode"]=>
  7.   string(13) "PC120000489DE"
  8.   ["return_cost"]=>
  9.   string(6) "295.00"
  10.   ["reason_id"]=>
  11.   string(1) "3"
  12.   ["docs"]=>
  13.   array(6) {
  14.     [0]=>
  15.     NULL
  16.     [1]=>
  17.     int(1)
  18.     [2]=>
  19.     int(1)
  20.     [3]=>
  21.     int(1)
  22.     [4]=>
  23.     int(1)
  24.     [5]=>
  25.     int(1)
  26.   }
  27.   ["crm"]=>
  28.   int(0)
  29.   ["comment"]=>
  30.   string(0) ""
  31.   ["customer_id"]=>
  32.   string(3) "258"
  33. }

Да и строка выглядит корректной. Возможно, Вы не все учитываете? Приведите код, в котором происходит обработка.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
lamozavrik
Отправлено: 25 Июня, 2012 - 13:30:39
Post Id



Частый гость


Покинул форум
Сообщений всего: 161
Дата рег-ции: Дек. 2011  


Помог: 4 раз(а)




EuGen, в том то и дело, что если я эту строку так как Вы
Цитата:
var_dump(json_decode('{"return_date_creation":"2012-06-25 13-17-56","package_id":"48","barcode":"PC120000489DE","return_cost":"295.00","reason_id":"3","docs":[null,1,1,1,1,1],"crm":0,"comment":"","customer_id":"258"}'));
, то все норм, выводится тоже, что и у Вас, а если я делаю так
, то мне возвращает NULL

$this->request->post['return'] - тоже, что и $_POST['return'];

(Отредактировано автором: 25 Июня, 2012 - 13:33:50)



-----
Ударим крепким сном по мукам совести!
 
 Top
Viper
Отправлено: 25 Июня, 2012 - 13:33:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




lamozavrik а где вы элемент массива return видите?


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
EuGen Администратор
Отправлено: 25 Июня, 2012 - 13:34:58
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Значит, не одно и то же.
Посмотрите var_dump($this->request->post['return']) - отладка стандартна.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
lamozavrik
Отправлено: 25 Июня, 2012 - 13:35:02
Post Id



Частый гость


Покинул форум
Сообщений всего: 161
Дата рег-ции: Дек. 2011  


Помог: 4 раз(а)




Viper, эта строка - это echo $this->request->post['return'];
(Добавление)
EuGen пишет:
Посмотрите var_dump($this->request->post['return']) - отладка стандартна.

string(352) "{"return_date_creation":"2012-06-25 13-23-15","package_id":"48","barcode":"PC120000489DE","return_cost":"295.00","reason_id":"3","docs":[10,1,1,1,1,1],"crm":0,"comment":"","customer_id":"258"}"


-----
Ударим крепким сном по мукам совести!
 
 Top
Viper
Отправлено: 25 Июня, 2012 - 13:43:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




lamozavrik У вас случайно никаким фильтром не обрабатывается? Что будет если нативно $_POST['return'] использовать?


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
lamozavrik
Отправлено: 25 Июня, 2012 - 13:44:30
Post Id



Частый гость


Покинул форум
Сообщений всего: 161
Дата рег-ции: Дек. 2011  


Помог: 4 раз(а)




Viper, пробовал... тоже самое (


-----
Ударим крепким сном по мукам совести!
 
 Top
Мелкий Супермодератор
Отправлено: 25 Июня, 2012 - 13:47:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




lamozavrik пишет:
string(352)

А данные - 192 символа.
См. чистые данные, если смотрите в браузере - то исходный текст страницы.


-----
PostgreSQL DBA
 
 Top
lamozavrik
Отправлено: 25 Июня, 2012 - 13:53:52
Post Id



Частый гость


Покинул форум
Сообщений всего: 161
Дата рег-ции: Дек. 2011  


Помог: 4 раз(а)




Мелкий, вот спасибо! )) Там действительно почему то вместо двойных кавычек приходили " . Никто не подскажет почему? )


-----
Ударим крепким сном по мукам совести!
 
 Top
Мелкий Супермодератор
Отправлено: 25 Июня, 2012 - 14:05:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




lamozavrik, разбирайте код, который отправляет запрос, может там кодируется. И, вдобавок, нигде ли не фильтруются все данные без исключения уже на серверной стороне.
Явно виден какой-то фреймворк, сам же php таким не занимается.


-----
PostgreSQL DBA
 
 Top
lamozavrik
Отправлено: 25 Июня, 2012 - 14:14:39
Post Id



Частый гость


Покинул форум
Сообщений всего: 161
Дата рег-ции: Дек. 2011  


Помог: 4 раз(а)




Мелкий, это CMS opencart, но такое даже тогда, когда напрямую делать $_POST;
(Добавление)
Мелкий, Вы были правы, они на входе фильтруют глобальные массивы с помощью htmlspecialchars($data, ENT_COMPAT) и потом перезаписываю его уже отфильтрованным ))) Спасибо еще раз )


-----
Ударим крепким сном по мукам совести!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Если скрипт не работает »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB