将错误消息传递给ajax错误处理程序

时间:2017-06-23 23:08:01

标签: javascript jquery asp.net ajax webforms

我使用jQuery' s ajax从客户端调用控制器方法。

$.ajax({
    url: "/Services/VendorServices.asmx/SendVendorRequestNotifications",
    type: 'POST',
    contentType: "application/json",
    dataType: "json",
    data: JSON.stringify({ vendorModel: info }),
    timeout: requestTimeOut,
    success: function (data) {
        // Success
    },
    error: function (jqXHR, textStatus, errorThrown) {
        // Error: Would like to display meaningful message here!
    }
});

如果我的SendVendorRequestNotifications引发异常,我想在客户端显示错误消息。但是,我似乎无法向用户显示一条好消息。

textStatus:

  

错误

errorThrown:

  

内部服务器错误

jqXHR.responseText:

  

{"消息":"发生了一个或多个错误。"," StackTrace":"在System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
  在System.Threading.Tasks.Task' 1.GetResultCore(Boolean waitCompletionNotification)
  在System.Threading.Tasks.Task' 1.get_Result()"," ExceptionType":" System.AggregateException"}

如您所见,这些都不是有用的数据。我希望能够在服务器上收集更有意义的消息,并将其提供给error来电的$.ajax处理程序。

这可能吗?

1 个答案:

答案 0 :(得分:0)

要手动传递HttpStatusCodeResult,请尝试以下操作:

return new HttpStatusCodeResult(HttpStatusCode.BadRequest, e.Response.ReasonPhrase);

不幸的是,您似乎已经锁定了一个不会被视为AJAX错误的返回类型,因此您需要考虑将控制器操作的返回类型更改为得到理想的结果。祝你好运