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

如何在jQuery Ajax error回调中获取400错误返回的字符串内容

实现方法

完全可以在error回调中拿到400响应的内容,jQuery的ajax错误回调会暴露jqXHR对象,响应内容就存在该对象的属性中。另外你现有代码还有一处参数绑定的坑需要修复,否则请求会直接触发模型绑定错误,进不到你写的接口逻辑里。

1. 核心修改:error回调读取响应内容

$.ajax的error回调第一个参数就是jqXHR实例,你后端返回的纯字符串错误信息存在responseText属性上,直接读取即可:

error: function (jqXHR) {
    // 这里拿到的就是后端返回的"Failed to Approve version"字符串
    const errorMsg = jqXHR.responseText;
    // 可直接用于错误提示
    alertify.error(errorMsg);
    $('#datatable').DataTable().ajax.reload();
}

如果后续接口返回JSON格式的错误对象,直接取jqXHR.responseJSON就能拿到解析完成的JavaScript对象,无需手动反序列化。

2. 修复请求参数绑定问题

你现有代码的请求传参方式和后端[FromBody] int id的参数要求不匹配,会直接触发ASP.NET Core的模型验证400错误,根本走不到你写的catch分支返回自定义错误,需要按如下方式修改ajax配置:

  • 新增contentType声明,指定请求体为JSON格式
  • 把参数序列化为JSON字符串传递,注意[FromBody]接收简单int类型时,直接传id值即可,不要包装成{id:id}的对象格式
  • 修正原代码中错误的括号闭合位置

修改完成的完整ajax请求代码如下:

$.ajax({
    type: 'POST',
    url: "@TempData["api"]api/Versioning/Approve",
    headers: {
        'Authorization': 'Bearer @HttpContextAccessor.HttpContext.Session.GetString("token")'
    },
    // 指定请求体格式为JSON
    contentType: 'application/json',
    // 序列化参数为JSON字符串传递
    data: JSON.stringify(id),
    success: function () {
        alertify.set('notifier', 'position', 'top-center');
        alertify.success('Successfully approved a Document version');
        $('#datatable').DataTable().ajax.reload();
    },
    error: function (jqXHR) {
        const errorMsg = jqXHR.responseText;
        alertify.error(errorMsg);
        $('#datatable').DataTable().ajax.reload();
    }
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 16:27:26