我在php中遇到json_encode()
的奇怪问题。非常简单的代码:
$content = json_encode(array('content1' => $arm_length,
'content2' => $body_length));
echo $content;
$arm_length
和$body_length
变量包含两个选择下拉菜单的HTML标记。我的问题是echo
显示NULL
content1
和content2
时的json_encode()
。如果我将print_r($content)
带走,只做{{1}},它会显示所有数据。
有谁知道这里发生了什么?是否有某些数据无法解析为JSON?我现在已经使用Ajax / PHP做了几次,从来没有遇到任何问题。
为此提供任何帮助。
答案 0 :(得分:4)
json_encode()
具有静默null
包含无效(=非UTF-8)字符的属性的(未记录的)习惯。
确保您的输入数据采用UTF-8编码, 是该功能的文档要求。
如果编码失败,
json_last_error()
可用于确定错误的确切性质。 (仅适用于PHP 5.3)
相关:How to keep json_encode() from dropping strings with invalid characters
答案 1 :(得分:0)
引号“应该像这样转义:\” 你可以通过add_slashes($ arm_length)
来做到这一点json也会在\ n(新行)和其他一些字符上抛出错误,你可以在这里找到完整列表 - http://json.org/