我在Flash中构建一个包含JSON编码的对象数组的请求。这是使用as3corelib编码的。然后,请求通过ExternalInterface传递给JavaScript,jquery ajax调用将请求发送到服务器。
在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。这可能是问题吗?
答案 0 :(得分:3)
magic_quotes_gpc
可能是问题,是的。如果你盲目地重新编码,不知道字符集也可能是一个问题。
因此,如果您知道magic_quotes_gpc
已启用,则需要先删除斜杠。
对于charset,请注意你知道编码数据编码的字符集,而不是它已经utf-8
编码,你认为它是latin-1
并再次转换它。