2014-08-28 63 views
-5

當我通過AJAX將一些JSON數據提交給PHP腳本時。看起來JSON數據自動解碼,無需致電json_decode。這是爲什麼發生?PHP會自動解碼JSON數據?

JS:

$(function(){ 
    var m={"name":"kikim","age":33}; 

    $.post(
     'xxx.php', 
     {a:m}, 
     function(){ 
      alert(data.name); 
     } 
    ); 
}); 

PHP:

echo($_POST['a']['name']); 

結果:

kikim

+3

感謝:

所以,如果你想發送JSON編碼的數據,而不是你可以做這樣的事情:

$(function(){ var m={"name":"kikim","age":33}; $.post( 'xxx.php', JSON.stringify(m), function(){ alert(data.name); } ); }); 

然後在PHP像!上面的陳述你有問題嗎? – PeeHaa 2014-08-28 16:06:14

+0

是的,我想知道如果php發送json數據 – mizanoviche 2014-08-28 16:09:25

+0

json格式您不發送json。你正在發送一個JavaScript對象,而沒有進行反編碼以將其編碼爲json。如果您設法正確發送它,PHP將不會自動解碼json。 – mizanoviche 2014-08-28 16:10:16

回答

0

您目前提交數據的方式在發送之前未被轉換爲JSON。相反,JavaScript對象正在轉換爲HTTP Post變量。如果您希望在提交之前將數據轉換爲JSON,則可以使用JSON.stringify()函數並將輸出的字符串作爲POST參數傳遞。分享

$json = json_decode(file_get_contents('php://input')); 
+0

謝謝你現在我明白的例子,所以PHP包括obj javascript,json數據但是不是,當然當我們發送它們的時候到服務器! – mizanoviche 2014-08-28 16:49:04

+0

我說的是真的嗎? – mizanoviche 2014-08-28 16:57:58

+0

在發送之前,JQuery會自動將JavaScript對象轉換爲HTTP Post變量,這是PHP本身理解的。 – AeroX 2014-08-28 17:01:09