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

PHP代码触发警告时为何xhr.response会被设为null?

问题原因与触发时机分析

核心原因

  • 未初始化的$VALORES变量触发PHP警告后,警告文本会混入HTTP响应内容。当数据库查不到请求的zona值时,代码直接使用未赋值的$VALORES,抛出Warning: Undefined variable $VALORES in publicaciones.php on line 186这类警告信息。这个警告会被输出到响应的最前面,导致原本的JSON内容前多了非JSON格式的字符串。
  • Postman对响应的容错性更高,它会跳过前置的无效文本,直接解析后面的合法JSON,所以能正常显示结果。但前端的XMLHttpRequest(xhr)会严格校验响应格式:当服务器返回的Content-Type声明是application/json,但实际响应内容开头有非JSON的警告文本时,整个响应会被判定为非法JSON,xhr会直接返回null作为response值。

触发时机

  • 触发的前提是请求的zona值在数据库中无匹配记录,此时$VALORES未被赋值就进入后续逻辑,触发未定义变量警告。
  • 只有当PHP的display_errors配置为开启状态(默认开发环境通常开启),警告被直接输出到响应流中,且前端通过xhr发起请求时,才会出现xhr.response为null的情况。如果后端关闭了错误输出(仅将警告记录到日志文件),即使变量未初始化,也不会影响前端获取JSON响应。

内容的提问来源于stack exchange,提问作者αγρ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 09:52:06