我的JSON没有被PHP解码

时间:2012-04-16 14:07:40

标签: php javascript jquery json

我的PHP脚本在解码我通过AJAX发送给它的JSON时出现问题。

jQuery:

$.ajax({
    url : 'admin/modifyPermissions',
    type : 'post',
    data : {
        'JSON' : JSON
    },
    success : function(msg){
        if(msg == '1') {
            alert('Permissions saved successfully');
        } else {
            alert(msg);
        }
    }
});

PHP脚本:

public function modifyPermissions(){

    if(isset($_POST['JSON']) && !empty($_POST['JSON'])) {
        $json = json_decode($_POST['JSON'],true);
        if($json !== NULL && $json !== FALSE) {

        } elseif($json === NULL){
            die('The string passed is not a valid JSON object and cannot be decoded.' . "\n" . $_POST['JSON']);
        } else {
            die('There was an error with the JSON string');
        }
    } else {
        die('No JSON string was sent!');
    }
}

传递给我的JSON看起来很好:

{"martin":{3,5},"user2":{3,4,5}}

PHP返回null。我的服务器上安装了PHP 5.2.7,所以我不能使用json_last_error()

3 个答案:

答案 0 :(得分:5)

{"martin":{3,5},"user2":{3,4,5}}

无效的JSON。有效的JSON可能如下所示:

{"martin":[3,5],"user2":[3,4,5]}

答案 1 :(得分:0)

您没有发送有效的JSON,因此错误。看看@Matt补充的评论。

因此,在将其发送给PHP之前,您不会重现相同的错误,不要尝试制作自己的JSON字符串,使用JS为您提供的内容。例如:

var obj = { key: val, okey: oval }
objJSON = JSON.stringify(obj)
// objJSON is ALWAYS going to be valid json

答案 2 :(得分:0)

您的JSON无效。

{}表示法表示键/值对,当您将其用作数组时。

你的JSON应该是,

{"martin":[3,5],"user2":[3,4,5]}