如何在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
相关产品推荐
相关产品推荐

