所有,我有一个运行MYSQL查询的php文件,并将结果放在一个数组中。该表有几个字段,一个字符' - '和'%'作为varchar字符串的一部分。当我在JSON数组中传回它时,它就会死掉。以下是代码部分..
PHP文件
// fetch merit guidelines
$meritGuideline = array();
$sql = "SELECT smg.id, year, ea.rating, ratioUpper, ratioLower, guideline, guidelineNum FROM spot_merit_guide smg JOIN epm_annual ea ON ea.id = smg.rating WHERE year = '$spotYear'";
$query = mysqli_query($con, $sql);
while ($row = mysqli_fetch_assoc($query)) {
$meritGuideline[] = $row;
}
mysqli_free_result($query);
然后我用这个
返回echo json_encode(array('meritGuideline' => $meritGuideline));
mysql表字段指南包含字符串0 - 4%。
答案 0 :(得分:1)
首先,尝试将数据编码为UTF-8:
// fetch merit guidelines
$meritGuideline = array();
$sql = "SELECT smg.id, year, ea.rating, ratioUpper, ratioLower, guideline, guidelineNum FROM spot_merit_guide smg JOIN epm_annual ea ON ea.id = smg.rating WHERE year = '$spotYear'";
$query = mysqli_query($con, $sql);
while ($row = mysqli_fetch_assoc($query)) {
$meritGuideline[] = utf8_encode($row); // ENCODE TO UTF-8
}
mysqli_free_result($query);
然后运行它以进行调试:
echo json_encode(array('meritGuideline' => $meritGuideline));
echo 'Error: ' . json_last_error_msg();
如果上面的第一行确实输出了你的JSON,那么问题很可能是隐藏的UTF-8只有特殊/不可见的空格字符,这在处理JSON编码或甚至是Javascript代码解析时经常是恶作剧。浏览器。以下是这些“特殊”空格字符的一些示例:
不间断的空间:http://www.fileformat.info/info/unicode/char/00a0/index.htm
零宽度空间:http://www.fileformat.info/info/unicode/char/200b/index.htm
如果第一行仍然没有输出任何内容,那么第二行将允许您查看PHP的JSON编码器中发生的确切错误。