Sivo 悉见

jquery使用Ajax通过post方式传递json字符串 PHP无法转换为数组的解决办法

匿名 · 更新于 2015/2/3

因为在json字符串传递到服务器端的时候,单引号或者双引号会被自动转义为html实体,所以需要用PHP函数htmlspecialchars_decode将HTML实体还原为单双引号,下面是例子

客户端代码

<input type="button" value="确认测试" onClick="test()" />
<script type="text/javascript">
function test(){
    $.post("test.php",{msg:"{'type':0,'phone':18888888888}",'t':Math.random()},function(data){
            alert(data.msg);
    })
}
</script> 

服务器端代码
$arr = json_decode(htmlspecialchars_decode($_POST['msg'])),true);
var_dump($arr)