我在localhost上开发了一个使用mootools和Json的系统 我将它移动到生产服务器,它不起作用 我开发了一个非常简单的模型,它也产生了null:
<script type="text/javascript" src="bookingSystem/mootools/mootoolsCore.js">
</script>
<script type="text/javascript" src="bookingSystem/mootools/mootoolsMore.js">
</script>
<script>
function json(){
var weekDays = JSON.encode({
apple: 'red',
lemon: 'yellow'
});
;
alert(weekDays);
var request = new Request.JSON({
method: 'post',
url: 'jsonTest.php',
data: {
weeks: weekDays
},
onComplete: function(jsonObj){
alert("back");
}
}).send();
}
</script>
</head>
<body>
<span onmousedown="json()">JSONTEST</span>
</body>
</html>
和php是
<?php
var_dump(json_decode($_POST['weeks']));
?>
它解码为NULL。
它与localhost上的数组完美配合,但我无法让数组在我的实时服务器上运行。如果我不使用数组它工作正常。 任何我可以开始看的想法。
感谢
答案 0 :(得分:1)
我猜你的服务器魔术引号会在你的开发机器上没有激活。如果您使用的POST变量包含引号json_decode
则会以静默方式失败并返回NULL
。
魔术引号会自动使用反斜杠转义所有POST,GET和COOKIE变量中的某些字符('
,"
和二进制零)。用JSON编码的简单变量可能不包含这些字符中的一个,因此它也可以在服务器上运行,但如果对数组进行编码,则可能不是这种情况。
http://de.php.net/manual/en/security.magicquotes.disabling.php讨论了如何禁用魔术引号,即使您无法访问PHP配置文件。