2010-05-24 4 views
2

Я создаю приложение codeigniter, которое использует json_encode для предоставления данных ajax во многих местах ... сегодня я узнал, что на сервере есть php 5.1.6, который не поддерживает этот метод (или json_decode) .. что я могу сделать?? пожалуйста помоги.php 5.1.6 json_encode и codeigniter

ответ

0

Мне нужен json_encode и json_decode для сетки jquery. Я попробовал upgradephp, но json_encode, похоже, не работал с сеткой jquery, поэтому я удалил эту функцию из файла и добавил this one. json_decode, похоже, работает нормально.

0

json_decode добавляется так (PHP 5> = 5.2.0, PECL JSON> = 1.2.0), он поддерживается в вашей версии тоже, вы должны дать ему попробовать :)

8

Там является эмуляцией json_encode() в upgradephp. Просто включите() этот скрипт, и вам не нужно ничего переписывать.
В качестве альтернативы вы можете использовать PEAR::PHP_Compat. IIRC у него есть эмуляция этого тоже.
(Есть further альтернативной реализации плавающей вокруг, но часто возражает против стиля и не так быстро, и предназначено для эмуляции функции ядра.)

Вы можете установить их с auto_prepend_file= даже. Если вы просто хотите, чтобы расширение JSON включено, есть и другие источники.

+0

Ну, я не знал, что они существуют. Спасибо, что указали на них, все, что у меня есть, это Services_JSON и Zend_Json. –

+0

http://pear.php.net/package/PHP_Compat имеет более удобный код, и вы можете выбирать только любую функцию, которая вам нужна; но в настоящее время он менее совершенен. И на самом деле я думаю, что Zend_Json лучше для разработки, потому что у него есть отчет об ошибках. Где собственный PHP json_decode() не имеет. – mario

+0

+1 никогда не знал об этом –

2

Вы можете использовать Services_JSON, если CodeIgniter может использовать его вместо функций json_ * PHP 5.2. Я знаю, что Zend_Framework имеет Zend_Json, который использует функции json_ *, если он доступен, в противном случае он использует свою собственную реализацию в PHP-коде userland в качестве резервной копии.

Конечно, если у вас есть доступ к серверу для компиляции PHP, вы можете попробовать расширение или обновление до PHP 5.2 (лучшее решение).

EDIT: Я бы выбрал маршрут уровней совместимости, как указано выше.

0

Фактически, 5.1.6 поддерживает json_decode и json_encode, но они могут быть немного странными. Как и в случае, если вы подаете недействительный JSON, например, если у вас есть пустой ключ, он умрет без каких-либо предупреждений или ошибок. Но я использую json_encode и json_decode каждый день в среде 5.1.6. Это вполне возможно.