Angular $http.get获取含反斜杠的MySQL数据报错求助
兄弟,我太懂这种页面突然崩溃的挫败感了!你这个问题的根源其实很明确——手动拼接JSON字符串完全是给自己挖坑,尤其是当字段里有反斜杠这类特殊字符的时候,手动处理根本没法保证JSON的合法性。
核心解决方案:彻底放弃手动拼接JSON
别再自己写$outp = '{"Field 2":"'.$resultset['field_data'].'"}';这种代码了,PHP自带的json_encode()才是处理这类场景的正确姿势,它会自动帮你处理所有需要转义的字符(包括反斜杠、引号、特殊编码字符),生成标准合法的JSON。
举个正确的写法:
// 先把数据库结果整理成关联数组 $responseData = [ "Field 1" => $resultset['field1'], "Field 2" => $resultset['field_data'] ]; // 设置正确的响应头(非常重要!) header('Content-Type: application/json; charset=utf-8'); // 直接输出编码后的JSON echo json_encode($responseData);
解决字符乱码(那个�)的问题
你看到的some_data�2是字符编码不匹配导致的乱码,这也会间接破坏JSON的解析。要确保全链路编码统一为UTF-8:
- 数据库连接时设置编码:如果用mysqli,连接后执行
mysqli_set_charset($dbConn, 'utf8mb4');;如果用PDO,连接字符串里加上charset=utf8mb4。 - 确保数据库表的字段编码是
utf8mb4(支持更多特殊字符,比utf8更全面)。
为什么你之前用json_encode没生效?
大概率是这几个原因:
- 没设置
Content-Type响应头,导致Angular拿到的内容被当成普通文本解析,编码出错。 - 数据库查询结果的编码不是UTF-8,
json_encode遇到无法识别的字符时可能会返回false,或者生成不合法的JSON。可以用下面的代码查看具体错误:$json = json_encode($responseData); if ($json === false) { echo json_last_error_msg(); // 输出编码失败的具体原因 }
最后验证一下
写完PHP代码后,直接在浏览器里访问这个PHP文件,看输出的JSON是不是合法的——可以复制输出内容到浏览器控制台,用JSON.parse(你的JSON内容)测试,如果不报错就说明格式没问题。再用Angular的$http.get请求,应该就能正常渲染数据了。
内容的提问来源于stack exchange,提问作者Loo web
相关产品推荐
相关产品推荐

