我对PHP非常陌生,但现在我必须帮助我的朋友解决PHP问题。
他已经购买了一个基于PHP的网站,在他上传到主机后,发现有错误:
Fatal error: Call to undefined function json_encode() in xxx.php
代码非常简单:
echo json_encode(array(
'result' => true,
));
它将json发送给客户。
我知道在PHP 5.2之后添加了json_encode
,但是他的主机的PHP版本是PHP 5.1.2,所以这就是它报告错误的原因。
但是我们没有权利升级主机的PHP版本,因此我必须修改代码。如何让它在没有json_encode
的情况下将json返回给客户端?
客户端浏览器中的网页将运行此javascript代码,以获取并检查json:
jQuery.ajax({ 'url': '...', ...,
'success':function(json) {
if(json != null && json.result == true) {
// do something
}
}
}
非常感谢!
更新
由于我无权升级任何内容或安装新主机库,我唯一能做的就是更改代码。但我对php几乎一无所知,我也不知道如何使用第三方库。最后,我解决了这个问题:
在php中:
echo '{"result":"true"}';
在javascript中:
if(json!=null && json.result=="true") {
// do something
}
答案 0 :(得分:6)
首先:您应该强烈考虑升级,因为不再支持PHP 5.1.x和5.2.x.您表示您没有权利这样做,但如果您是付费客户,则应该有所收获。从last PHP 5.3.6 release开始,不推荐使用PHP 5.2。
PHP.net上的用户提供了同样的custom function。
您可以将其重命名为json_decode()
并将其包装在if (!function_exists('json_encode'))
语句中:
if (!function_exists('json_encode')) {
function json_encode() {
// do stuff
}
}
答案 1 :(得分:3)
他有一个较旧的PHP版本,其中缺少json_encode。这可以通过各种第三方库来修复。
json_encode
/ json_decode
(关于Unicode的古怪)。答案 2 :(得分:1)
json_encode
的PHP文档评论中发布了an implementation you can use。
答案 3 :(得分:1)
您可以使用第三方JSON库,例如PEAR项目中的库(它们提供各种有用的PHP库,质量各异):
http://pear.php.net/pepr/pepr-proposal-show.php?id=198
我确信还有更多(我会尝试在Google上搜索PHP JSON库)。
答案 4 :(得分:0)
为什么不使用可以包含在每个设置中的普通PHP json库?
我在这里用Google搜索了this。
答案 5 :(得分:0)
在http://www.php.net/manual/en/function.json-encode.php阅读json_encode的评论,您还可以在其中找到包含php<的手动实现的评论。 5.2: http://www.php.net/manual/de/function.json-encode.php#100835
此外,还有其他可通过谷歌实现。
答案 6 :(得分:0)
jsonwrapper实现json_encode函数(如果它已丢失),如果它已经存在则保持不变。所以它很好地适应未来。
答案 7 :(得分:0)
我必须在我的服务器上安装JSON Libs,请尝试以下方法:
执行以下命令:
pecl install json
touch /etc/php.d/json.ini
echo "extension=json.so" > /etc/php.d/json.ini
service httpd restart
第一行将json库安装到您的机器上,第二行将在php.d目录中创建json.ini文件,最后一行将extension=json.so
行添加到json.ini
文件。
希望这有帮助!