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

jQuery Ajax发送DELETE请求返回200却触发error事件如何解决

问题根因

你触发error事件的核心原因是AJAX配置了dataType: 'JSON',jQuery会强制将返回结果解析为JSON格式,但你后端删除逻辑执行完成后没有输出任何合法JSON内容,返回的responseText为空字符串,JSON解析失败就会进入error回调。
你看到的严格模式相关报错不属于业务代码问题,是浏览器控制台读取jQuery封装的XHR对象内置属性时,访问了严格模式下限制访问的caller/arguments属性触发的提示,不影响业务逻辑,无需额外处理。

可行解决方法

方案1:后端返回合法JSON响应(推荐)

修改你的APIHandler.php删除逻辑,执行完成后输出标准JSON结构,同时设置正确的响应头:

if ($_SERVER['REQUEST_METHOD'] === 'DELETE') {
    // 先设置JSON响应头
    header('Content-Type: application/json');
    $vals = $_GET['values'];
    $API->delete($vals);
    // 输出合法JSON结构,可根据业务需要自定义字段
    echo json_encode([
        'status' => 'success',
        'message' => '数据删除完成'
    ]);
    exit;
}

方案2:修改AJAX配置适配空响应

如果你确实不需要后端返回任何内容,可以调整AJAX的dataType配置,同时增加空响应兼容逻辑:

function ajaxCall(method,hmm){
    $.ajax({
        // 移除强制JSON解析配置,或改为dataType: 'text'
        // dataType: 'JSON',
        url: '/APIHandler.php?' + $.param({values:hmm}),
        type: method,
        success: function(response) {
            console.log(response);
            const parentDiv = document.querySelector('#basic-grid');
            removeAllChildNodes(parentDiv);
            // 仅当有返回内容时执行转对象逻辑
            if(response && response.length > 0) {
                turnToObjects(JSON.parse(response));
            }
        },
        error: function(xhr){
            alert(xhr);
            console.log(xhr);
        }
    });
}

内容的提问来源于stack exchange,提问作者Leon Kardaš

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 07:06:04