2
我在Flash中构建了一个包含JSON编码的对象数组的请求。这是使用as3corelib编码的。然后通过ExternalInterface将该请求传递给JavaScript,并通过jquery ajax调用将请求发送给服务器。json_decode - 来自AJAX的格式错误的JSON请求
在PHP中,传入的数据将被解析,但json_decode返回null,从而产生格式错误的JSON错误。的var_dump结果评论:
<?php
(isset($_POST['gdata']) && !empty($_POST['gdata'])) ? $gamedata = $_POST['gdata'] : returnError("game data not specified");
var_dump($gamedata); // (String) = string(37) "[{\"duration\":1,\"id\":\"game2\"}]"
$gamedata = json_decode(utf8_encode(trim($gamedata)),true);
var_dump($gamedata); // null
$gamedata = json_decode("[{\"duration\":1,\"id\":\"game2\"}]",true);
var_dump($gamedata);
/*
array(1) {
[0]=>
object(stdClass)#1 (2) {
["duration"]=>
int(1)
["id"]=>
string(7) "game2"
}
}
*/
?>
我不明白的是,试图变解码返回null,但相同的文字从一个文本字符串解码工作正常。我能做些什么来清理传入的数据并使之可读取json_decode?
编辑:php_info()
说magic_quotes_gpc已启用。这可能是问题吗?
magic_quotes_gpc可能是问题,是的。如果你盲目地重新编码,不知道charset可能也是一个问题。 – hakre
是的,将utf8_encode改为stripslashes完成了这项工作。 @hakre - 如果您作为答案发布,代表是您的代表 – shanethehat