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

使用Ajax提交表单至PHP无响应,请求问题排查

排查Ajax提交表单无响应问题

前端代码问题及修复

问题点

  1. 事件参数缺失:点击事件函数未接收e参数,直接调用e.preventDefault()会触发未定义错误,中断后续Ajax执行。
  2. 重复success回调:Ajax配置中写了两个success函数,后者会覆盖前者,导致第一个alert(data)永远无法执行。
  3. 错误回调变量未定义:error回调里使用jqXHR但未将其作为参数传入,无法打印有效错误信息。

修改后的前端JS代码

$(document).ready(function() {
    $("#submit_button").click(function(e) { // 传入事件参数e
        e.preventDefault();
        var doctor_id = $("#doctor_id").val();
        var schedule_date = $("#schedule_date").val();
        var schedule_timeslot = $("#schedule_timeslot").val();
        var schedule_status = $("#schedule_status").val();
        var action_type = $("#action_type").val();
        console.log(doctor_id, schedule_date, schedule_timeslot, schedule_status, action_type);
        
        $.ajax({
            url: "modify_schedule_action.php",
            type: "POST",
            data: {doctor_id:doctor_id,schedule_date:schedule_date,schedule_timeslot:schedule_timeslot,schedule_status:schedule_status,action_type:action_type},
            success: function(data) {
                alert(data);
                console.log("Success", data); // 合并两个success逻辑
                closeModal(); // 可选:提交成功后自动关闭弹窗
            },
            error: function(jqXHR, textStatus, errorThrown) { // 正确定义回调参数
                console.log("Error:", jqXHR.responseText, textStatus, errorThrown);
            }
        });
    });
});

PHP代码问题及修复

问题点

  1. 未输出结果:插入成功后定义的$output没有被echo,前端无法收到反馈信息。
  2. 参数未做存在性检查:直接访问$_POST['action_type']等参数,会在参数缺失时触发Notice错误。
  3. 未验证SQL执行结果:直接执行插入操作,无法确认是否成功,无法返回准确的状态信息。

修改后的PHP代码

<?php
include('../class/Appointment.php');

$object = new Appointment;

$output = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // 检查action_type参数是否存在
    if(isset($_POST['action_type'])){
        if($_POST['action_type'] == 'add')
        {
            // 检查所有必填参数是否齐全
            if(isset($_POST['schedule_date'], $_POST['schedule_status'], $_POST['schedule_timeslot'], $_POST['doctor_id'])){
                $data = array(
                    ':schedule_date'      =>  $_POST['schedule_date'],
                    ':schedule_day'       =>  date('l', strtotime($_POST["schedule_date"])),
                    ':schedule_status'    =>  $_POST['schedule_status'],
                    ':schedule_timeslot'  =>  $_POST['schedule_timeslot'],
                    ':doctor_id'          =>  $_POST['doctor_id'],
                );

                $object->query = "INSERT INTO `schedule` (`schedule_date`, `schedule_day`, `schedule_status`, `schedule_timeslot`, `doctor_id`)
                VALUES (:schedule_date,:schedule_day,:schedule_status,:schedule_timeslot,:doctor_id)";

                // 判断SQL执行是否成功
                if($object->execute($data)){
                    $output = 'Data added successfully';
                }else{
                    $output = 'Failed to add data';
                }
            }else{
                $output = 'Missing required parameters';
            }
        }else{
            $output = 'Invalid action type';
        }
    }else{
        $output = 'Action type not specified';
    }
    // 输出最终结果给前端
    echo $output;
}
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 11:15:38