Что делать, если json_decode возвращает пустую строку

Июль 19, 2012

Недавно столкнулся с проблемой. Решил продолжить разработку вне работы, дома, чтобы успеть сдать проект в срок. Однако, скопированный проект не стал работать на локальном сервере. Причина заключалась в том, что определенная команда вместе с параметрами отправляется на сервер с помощью POST запроса из JavaScript jQuery. Параметры передаются в отдельной переменной в формате JSON:

config.params = '{"products":"454,103,505","category":"7"}';

На стороне сервера происходит прием параметров:

$params = $_POST[ 'params' ];

Для использования параметров их нужно перекодировать:

$params = json_decode( $params );

На данном этапе и возникла проблема. После обработки переменной $params с помощью json_decode() она становилась пустой.

В процессе отладки я обратил внимание, что к отправляемой строке с параметрами в формате JSON к кавычкам добавлены обратные слэши.

Оказалось, что на локальном сервере параметр magic_quotes_gpc установлен в true, поэтому функция json_decode() не могла обработать строку.

Решение проблемы:

public function decode_params( & $params ) {
	if ( ! empty( $params ) ) {
		if ( get_magic_quotes_gpc() ) {
			$params = stripslashes( $params );
		}
		$params = json_decode( $params );
	}
}

Tags: ,

Запись опубликована Четверг, Июль 19, 2012 в 04:17 и находится в JavaScript, Программирование . Вы можете следить за ответами к этой записи через RSS 2.0 ленту. Вы можете оставить комментарий, или обратиться к записи со своего сайта.

Оставить Комментарий

*