0

我的 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()

4

3 回答 3

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

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

{"martin":[3,5],"user2":[3,4,5]}
于 2012-04-16T14:09:35.523 回答
0

您没有发送有效的 JSON,因此出现错误。查看@Matt 添加的评论。

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

var obj = { key: val, okey: oval }
objJSON = JSON.stringify(obj)
// objJSON is ALWAYS going to be valid json
于 2012-04-16T14:11:53.453 回答
0

您的 JSON 无效。

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

你的 JSON 应该是,

{"martin":[3,5],"user2":[3,4,5]}
于 2012-04-16T14:12:32.833 回答