1.9 KiB
1.9 KiB
问题分析
从截图中可以看到,日志表格显示了"Invalid Date"、"undefined"等错误值,这表明前端代码在解析API返回的JSON数据时出现了问题。
根本原因
- 后端
QueryLog结构体的JSON标签使用了小写字段名(如json:"timestamp"、json:"clientIP"等) - 前端代码使用了大写的字段名(如
log.Timestamp、log.ClientIP等)来访问数据 - 字段名大小写不匹配导致前端无法正确解析API返回的数据
修复方案
修改前端代码,使用正确的小写字段名来访问API返回的数据,与后端返回的JSON格式匹配。
具体修改点
-
updateLogsTable函数(约435-621行):-
将
log.Timestamp改为log.timestamp -
将
log.ClientIP改为log.clientIP -
将
log.Domain改为log.domain -
将
log.QueryType改为log.queryType -
将
log.ResponseTime改为log.responseTime -
将
log.Result改为log.result -
将
log.BlockRule改为log.blockRule -
将
log.FromCache改为log.fromCache -
将
log.DNSSEC改为log.dnssec -
将
log.EDNS改为log.edns -
将
log.DNSServer改为log.dnsServer -
将
log.DNSSECServer改为log.dnssecServer -
将
log.ResponseCode改为log.responseCode
-
-
showLogDetailModal函数(约1450-1597行):- 同样修改所有字段名的大小写
-
其他可能的访问点:
- 检查并修改任何其他访问日志数据的地方
修复原则
-
保持前端代码与后端API返回的JSON格式一致
-
遵循REST API的最佳实践,使用小写字段名
-
确保所有日志数据访问点都得到修复
验证方法
- 修复代码后,重新编译并运行服务器
- 访问日志页面,检查日志数据是否正确显示
- 测试不同类型的日志(允许、屏蔽、错误),确保都能正确显示
- 测试日志详情模态框,确保所有字段都能正确显示