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

Ajax更新<span>无响应如何调试?PHP服务端滚动日历实现故障排查

按钮点击无响应的核心原因
  • cal.php日期格式化逻辑错误:你现有代码里补月份前导零的写法完全错误,单引号包裹的'$month'不会解析变量,会直接输出字符串$month,拼接后生成的日期格式类似2023-$month9-01,触发DateTime类的致命错误,导致接口返回失败。
    错误代码:
    if (strlen($month) === 1 ) {
        $month = '$month' . strval($month);
    }
    
    修正为:
    $month = str_pad($month, 2, '0', STR_PAD_LEFT);
    
  • cal.php缺少依赖引入:getCalendar()函数定义在根目录的calendar/calendar.php中,只有booking1.php引入了该文件,AJAX单独请求cal.php时找不到对应函数,直接抛出PHP致命错误,无有效内容返回。需要在cal.php开头添加引入逻辑:
    require_once dirname(__DIR__).'/calendar/calendar.php';
    
  • AJAX请求路径错误:如果当前访问的页面是presentation/booking2.php,你JS里写的相对路径presentation/cal.php会拼接为/presentation/presentation/cal.php,触发404错误。统一修改为绝对路径即可:
    $('#calendar').load('/presentation/cal.php?month=' + currentMonth + '&year=' + currentYear);
    
  • 标签属性拼写错误:所有script标签的src属性被误写为scr,会导致本地JS资源加载失败,如果jQuery CDN加载失败也会导致$未定义,所有交互失效。
无IDE环境下的调试方案

前端调试(Safari浏览器自带工具即可)

  • 开启Safari开发者菜单:点击顶部菜单栏Safari -> 设置 -> 高级,勾选底部「在菜单栏中显示“开发”菜单」
  • 打开Web检查器:点击顶部菜单栏开发 -> 显示Web检查器
    1. 查看「控制台」标签:点击按钮后看是否有JS报错,比如$ is not defined说明jQuery未加载成功,prevMonth is not defined说明JS函数未正常加载
    2. 查看「网络」标签:点击按钮后筛选XHR请求,看是否发出了cal.php的请求,确认请求URL是否正确、响应状态码是200/404/500,点击请求查看「响应」内容,就能直接看到接口返回的是报错信息还是正确的日历代码

后端调试(仅需修改代码即可)

  • 在cal.php最开头添加错误显示配置,请求时所有PHP错误会直接输出在响应内容里,在前端网络面板就能直接查看:
    <?php
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    // 原有代码
    
  • 直接在浏览器地址栏访问cal.php测试地址,比如http://你的项目地址/presentation/cal.php?month=9&year=2023,直接看返回内容是否符合预期,有没有报错信息。

内容的提问来源于stack exchange,提问作者w461

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:45:05