json_decode php在有效的json上返回null

时间:2015-05-25 15:30:14

标签: javascript php ajax json post

我试图通过javascript中的ajax帖子发送一个json对象,如下所示:

$.ajax({
                    type: 'POST',
                    url: 'testPost.php',
                    data: {json: cond},
                    dataType: 'json',
                    success: function(response) {
                        alert(response["json"]);
                    }
                });

cond表示json对象,它是这样的(用JSON.stringify转换):

[{“field”:“name”,“condition”:“<”,“value”:“John”}]

在testPost.php文件中我有以下内容:

    <?php
       $return=$_POST["json"];
       $decoded_json=json_decode($return);
       $reply["json"]=$decoded_json;
       print_r ( json_encode($reply));
?>

我的问题是Json_decode返回null。

我检查了编码(UTF-8),还检查了我发送到php文件的json女巫没有斜线或任何东西。

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

您的Ajax数据已转换为

[{json : {"field":"name","condition":"<","value":"John"}}]

由于json :方面无效。

将您的Jquery转换为

$.ajax({
    type: 'POST',
    url: 'testPost.php',
    data: {"json": cond},
    dataType: 'json',
    success: function(response) {
        alert(response["json"]);
    }
});

这里有作品的例子,

<?php 
    if(count($_POST) > 0){
        print_r($_POST);
        exit;
    }
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">

    <title>Document</title>
    <script src="jquery.js"></script>
    <script>
    $(function(){
        var cond = [{"field":"name","condition":"<","value":"John"}];
        $.ajax({
            type: 'POST',
            url: 'a.php',
            data: {"json" : cond},
            dataType: 'text',
            complete: function(response) {
                $("body").html(response.responseText);
            }
        });
    })
    </script>
</head>
<body>
</body>
</html>

答案 1 :(得分:0)

header('Content-Type: application/json');

您需要在echo之前在PHP中添加此行。

然后

$.ajax({
    type: 'POST',
    url: 'testPost.php',
    data: {json: cond},
    dataType: 'json',
    success: function(response) {
        alert(response.field);
        alert(response.condition);
        alert(response.value);
    }
});