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

如何在JsonResult强制错误时显示自定义消息及编写JQuery AJAX错误函数

解决jQuery AJAX error回调获取自定义errorMessage的问题

你碰到的核心问题是:当后端返回400这类错误状态码的JSON响应时,jQuery的error回调里的参数并不是直接的JSON对象,而是XMLHttpRequest实例,所以直接访问data.errorMessage会得到undefined。

解决步骤与代码示例

你需要从XMLHttpRequest对象中取出响应文本,手动解析成JSON对象,之后就能正常获取自定义的errorMessage了。修改后的AJAX代码如下:

function MyFun(Id) {
    console.log(Id);
    $.ajax({
        type: "POST",
        url: '@Url.Action("QuitarMiembro", "MiembrosJD")',
        dataType: 'json',
        data: { IdUsuario: Id },
        success: function (data) {
            fnMostrarMensajeExito(data.message);
            tablaMiembrosJD.ajax.reload();
        },
        error: function (xhr, status, error) {
            // 把后端返回的响应文本解析为JSON对象
            const responseData = JSON.parse(xhr.responseText);
            // 现在可以正常获取自定义错误信息了
            console.log(responseData.errorMessage);
            // 也可以调用你的错误提示方法,比如:
            // fnMostrarMensajeError(responseData.errorMessage);
        }
    });
}

额外提示

你的后端JsonResult方法可以保持不变,但如果遇到JSON解析失败的情况,可以显式设置响应的Content-Type确保格式正确:

public JsonResult QuitarMiembro(string Id)
{
    if (Id == null)
    {
        Response.StatusCode = (int)HttpStatusCode.BadRequest;
        Response.ContentType = "application/json"; // 显式指定响应类型
        return Json(new { errorMessage = "Null Id" });
    }
    // 其他业务逻辑...
}

另外补充下:error回调的三个参数分别是xhr(XMLHttpRequest实例)、status(错误状态描述字符串)、error(原生错误信息),我们核心用到的是xhr.responseText来获取后端返回的JSON文本内容。

内容的提问来源于stack exchange,提问作者Enmanuelle Acuña

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:57:41