2010-11-19 8 views
0

entwickelte ich auf localhost ein System mit Mootools und Json ich es auf dem Produktionsserver verschoben und es funktioniert nicht ich ein wirklich einfaches Modell entwickelt haben, und es produziert null zu: JSON Mootools Array Problem

<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> 

und pHP ist

<?php 
    var_dump(json_decode($_POST['weeks'])); 
?> 

Es wird als NULL decodiert.

Es funktionierte perfekt mit Arrays auf localhost, aber ich kann nicht das Array auf meinem Live-Server arbeiten. Wenn ich kein Array verwende, funktioniert es gut. Irgendwelche Ideen, wo ich anfangen kann, zu schauen.

dank

Antwort

1

Meine Vermutung Magie Zitate sind aktiv, während auf Ihrer Entwicklungsmaschine nicht, dass auf dem Server würde. Wenn die POST-Variable, die Sie verwenden, Anführungszeichen enthält, schlägt json_decode automatisch fehl und gibt NULL zurück.

Magic quotes entkommt bestimmte Zeichen (', " und die binäre Null) in allen POST, GET und COOKIE Variablen automatisch mit einem Backslash. Eine einfache Variable, die in JSON codiert ist, darf keines dieser Zeichen enthalten, so dass sie auch auf dem Server funktioniert. Dies ist jedoch möglicherweise nicht der Fall, wenn Sie ein Array codieren.

http://de.php.net/manual/en/security.magicquotes.disabling.php erläutert, wie Sie magische Anführungszeichen deaktivieren, auch wenn Sie keinen Zugriff auf PHP-Konfigurationsdatei haben.

+0

gibt es einen Weg um das Problem herum? – AAA

+0

Danke das hat sehr geholfen. Ich dachte, es wäre ausgeschaltet. Ich tat dies: – AAA

+0

if (is_array ($ _ POST ['wochen'])) { \t $ mike = stripeslashes ($ _ POST ['wochen']); } sonst { \t $ mike = ($ _POST ['Wochen']); } – AAA