JSON Mootools数组问题

时间:2010-11-19 16:58:24

标签: php json mootools

我在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上的数组完美配合,但我无法让数组在我的实时服务器上运行。如果我不使用数组它工作正常。 任何我可以开始看的想法。

感谢

1 个答案:

答案 0 :(得分:1)

我猜你的服务器魔术引号会在你的开发机器上没有激活。如果您使用的POST变量包含引号json_decode则会以静默方式失败并返回NULL

魔术引号会自动使用反斜杠转义所有POST,GET和COOKIE变量中的某些字符('"和二进制零)。用JSON编码的简单变量可能不包含这些字符中的一个,因此它也可以在服务器上运行,但如果对数组进行编码,则可能不是这种情况。

http://de.php.net/manual/en/security.magicquotes.disabling.php讨论了如何禁用魔术引号,即使您无法访问PHP配置文件。