2

我有以下问题:在我的本地开发服务器 PHP 5.3.10 / Apache 2 上,一切正常。当我使用生产服务器 PHP 版本 5.2.13 / Apache 2 运行相同的代码时,代码会失败,但在某些情况下并非总是如此。

更多细节 :

上下文:我在屏幕上有一个可以更新的 dojox.data.grid 表。修改后的数据以 JSON 字符串的形式正确传递给服务器。像这样 :

data = {
    "deletedItems":{}
    ,"newItems":{}
    ,"modifiedItems":{
        "2890":{"idFacture":"2890"
                ,"idClient":"175"
            ,"idAffaire":"1323"
            ,"idContrat":"2234"
            ,"raisonSociale":"xxxxxx"
            ,"nomAffaire":"xxxxxx"
            ,"nrFacture":"xxxxx"
            ,"dateFacture":"2012-12-06"
            ,"montantFacture":"160000.00"
            ,"pourcentageFacture":"64.88"
            ,"pourcentageCalcule":"32.44"
            ,"noteFacture":""
            ,"dateTransfert":""
            ,"aTransferer":true
            ,"typeDocument":"Facture"
            ,"factureSoldee":false
            ,"montantTotalHeures":"0.00"
            ,"pourcentageTotalHeures":"0.00"
            ,"montantTotalMateriel":"0.00"
            ,"pourcentageTotalMateriel":"0.00"
            ,"montantTotalSousTraitance":"160000.00"
            ,"pourcentageTotalSousTraitance":"40.94"
    }
    ,"2892":{"idFacture":"2892"
        ,"idClient":"50"
                    ,"idAffaire":"1649"
            ,"idContrat":"2713"
            ,"raisonSociale":"xxxxx"
            ,"nomAffaire":"xxxxx"
            ,"nrFacture":"xxxxx"
            ,"dateFacture":"2012-12-07"
            ,"montantFacture":"12004.50"
            ,"pourcentageFacture":"0.00"
            ,"pourcentageCalcule":"41.94"
            ,"noteFacture":""
            ,"dateTransfert":""
            ,"aTransferer":true
            ,"typeDocument":"Facture"
            ,"factureSoldee":false
            ,"montantTotalHeures":"12004.50"
            ,"pourcentageTotalHeures":"41.95"
            ,"montantTotalMateriel":"0.00"
            ,"pourcentageTotalMateriel":"0.00"
            ,"montantTotalSousTraitance":"0.00"
            ,"pourcentageTotalSousTraitance":"0.00"
        }
    }
}

可以看到数据包含三个元素“deletedItems”(空)、“createdItems”(空)和“modifiedItems”。

在 php 代码中,我有以下命令:

$srvJson = new Services_JSON(SERVICES_JSON_LOOSE_TYPE);

$data = $srvJson->decode($data);

$data 像上面那样填充的地方。通常在最后一条语句之后设置以下 PHP 变量:

  • $数据[“已删除项目”]
  • $data["createdItems"]
  • $data["modifiedItems"]

这是问题所在:如果在生产服务器上表中有很多修改的行(大约> 30),则修改后的数据正确传递给服务器但是 $data["modifiedItems"] 没有设置???如果我只是为几行修改数据集,$data["modifiedItems"] 就设置好了。我可以逐个修改整个数据集,但不能一次性修改整个数据集。

我想这是服务器设置的问题,但是什么?

我会很感激任何建议。

此致,

罗杰

PS:对不起我的英语

4

2 回答 2

1

由于它不是有效的 JSON(通过http://jsonlint.com/检查),因此 PHP 5.3.10 和 PHP 5.2.13 中 json_decode() 的结果是不同的!

虽然 5.3 不返回任何内容,但 5.2.13 返回初始字符串。可能您的代码在某处有一些错误更正......

在3v4l.org上查看不同 PHP 版本的不同结果!

当我们data =从您的 JSON中删除时不会引发错误。.

于 2013-01-07T10:23:58.663 回答
0

根据您的上述问题,您可以在服务器上检查以下内容

或者您可以使用默认的 php json 库进行编码和解码

愿这对你有帮助

于 2013-01-07T10:13:22.923 回答