2010-11-19 72 views
0

我開發本地主機上使用mootools的和系統的Json 我把它移到生產服務器和它不工作 我已經開發了一個非常簡單的模型,它產生的空太: JSON Mootools的陣列問題

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

它與本地主機上的陣列完美協作,但我無法讓陣列在我的實時服務器上工作。如果我不使用數組,它可以正常工作。 任何想法,我可以開始尋找。

感謝

回答

1

我的猜測是,你的服務器上魔術引號是你的開發機器上的活動,而不是。如果您使用的POST變量包含引號json_decode會自動失敗並返回NULL

所有POST,GET和COOKIE變量中的某些字符(',,"和二進制零)會自動帶有反斜槓。以JSON編碼的簡單變量可能不包含這些字符中的一個,因此它也可以在服務器上運行,但如果您編碼數組,則可能不是這種情況。

http://de.php.net/manual/en/security.magicquotes.disabling.php討論如何禁用魔術引號,即使您沒有訪問PHP配置文件。

+0

有沒有辦法解決這個問題? – AAA 2010-11-19 18:06:28

+0

謝謝,這有很大的幫助。我認爲它已關閉。我這樣做: – AAA 2010-11-19 18:47:53

+0

if(is_array($ _ POST ['weeks'])){ \t $ mike = stripslashes($ _ POST ['weeks']); } else { \t $ mike =($ _POST ['weeks']); } – AAA 2010-11-19 18:48:16