我有以下问题:在我的本地开发服务器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变量:
问题是:如果在生产服务器上表中有很多修改过的行(大约> 30),修改后的数据会正确传递给serveur但是$ data [“modifiedItems”]没有设置???如果我只修改几行的数据集,那么$ data [“modifiedItems”]设置得很好。 我可以修改每件的整个数据集,但不能一次修改整个数据集。
我想这是服务器设置的问题,但是什么?
我很感激任何建议。
致以最诚挚的问候,
罗杰
PS:抱歉我的英文
答案 0 :(得分:1)
由于它是无效的JSON(用http://jsonlint.com/检查),PHP 5.3.10和PHP 5.2.13中json_decode()的结果是不同的!
当5.3返回时,5.2.13返回初始字符串。可能你的代码有一些错误更正......
在3v4l.org上查看不同PHP版本的不同结果!
当我们从您的JSON does not throw errors.中移除data =
。
答案 1 :(得分:0)
根据您的上述问题,您可以检查服务器上的以下内容
或者您可以使用默认的php json库进行编码和解码
愿这会帮到你