You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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没生效?

大概率是这几个原因:

  1. 没设置Content-Type响应头,导致Angular拿到的内容被当成普通文本解析,编码出错。
  2. 数据库查询结果的编码不是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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:29:32