我的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()
答案 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]}