2014-08-28 71 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