【问题标题】:PHP json_decode not supported, any alternatives?不支持 PHP json_decode,还有其他选择吗?
【发布时间】:2010-09-14 10:09:57
【问题描述】:

如标题所示,我的托管服务商不支持json_decode,所以我需要找到一种方法来调整我的代码以达到相同的效果,但不使用JSON,这是我的代码,

jQuery:

    var allLocations = [];

    $(".locations").each( function(i, location) {
        // for each location block
        location = $(location);
        var loc = {
            'province' : $("select[data-loc*='province']", location).val(),
            'town' : $("select[data-loc*='town']", location).val()
        };
        allLocations.push( loc );
    });

        //POST the locations information
        $.ajax({
                type: 'POST',
                url: 'locations.php',
                dataType: 'json',
                data: { locations: JSON.stringify(allLocations), uid: uid },
                success: function(data){
                    //alert(data)
                }
        });

PHP:

$json = $_POST['locations']; 
$uid = $_POST['uid']; // $json is a string
$json_array = json_decode($json, true); 

mysql_connect('localhost','user','pass') or die(mysql_error());
mysql_select_db('eskom_products') or die(mysql_error());

//insert the locations into the database
while($json_array as $key){
    $query = mysql_query("INSERT INTO suppliersLocations (supplier_id, province, town) VALUES('".$uid."', '".$key['province']."', '".$key['town']."' ) ") or die(mysql_error());
}

echo $text;

如您所见,我正在获取每个位置的省和镇值并用它创建一个 JSON 对象,然后我通过 $.ajax 将其发送到 PHP 文件,但现在因为 json_decode 没有不起作用,我需要尝试找到另一种解决问题的方法,我正在考虑尝试将关联数组传递给 php 文件,但我想看看你的人的输入是什么,以及是否有更好的方法达到预期结果的方法。

提前谢谢!

【问题讨论】:

  • 在转向替代实施之前,我会尝试询问托管服务提供商是否以及何时计划升级到 5.2。也许礼貌地问一下是否有可能加快这个过程
  • PHP 二进制文件(例如 PHP 脚本库中)之外的 json 可能会很慢且有问题。

标签: php jquery ajax json


【解决方案1】:

您仍然可以使用 JSON。有几个编码器/解码器库没有您提到的扩展名。例如:

和其他人。看看 json.org

【讨论】:

【解决方案2】:

对于早于 5.2 的 PHP 版本(其中包含 json_*),还有一个 json_decode 的替代实现。它叫做jsonwrapper,对于我不久前做的一个项目来说效果很好。

或者看看一些 PEAR 包,例如Service_JSON.

【讨论】:

  • 如果我没记错的话,它只添加了json_encode函数,而不是我真正需要的json_decode函数,还有其他选择吗?
【解决方案3】:

参见 PHP 部分:

http://json.org/

【讨论】:

    【解决方案4】:

    This 就是你要找的东西。

    【讨论】:

    • 当我尝试得到这个“[恶意或不正确的 JSON 字符串]”,但我发送的是相同的 JSON 字符串json_decode 使用时,我假设这个类没有那么健壮。
    • 好吧,我没有遇到任何问题,但是有很多实现应该适合(参见其他答案)
    【解决方案5】:

    似乎是 php 配置文件中的一个模糊设置与 json_decode 混淆,一旦我禁用它,一切正常,感谢所有帮助人员!我会尽快编辑这个答案来描述我是如何工作的。

    【讨论】:

    • 有关“模糊设置”的更多详细信息可能会有所帮助。
    猜你喜欢
    • 2013-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多