来自IHttpActionResult的内容的ajax错误响应

时间:2017-05-31 23:05:01

标签: c# ajax asp.net-web-api model-view-controller

是否有人可以帮助我从IHttpresult

中获取此结果中的自定义文本
return Content(HttpStatusCode.BadRequest, "Any object");

并在ajax错误中显示它。

在服务器端,我有这个:

[HttpPost]
public IHttpActionResult CrearProducto(EProducto Producto)
{
    if (objBLProducto.ObtenerProductoRepetido(Producto, ConnectionStringStore).Count > 0)
            return Content(HttpStatusCode.BadRequest, "Producto repetido"); 
        if (objBLProducto.InsertarProducto(Producto, ConnectionStringStore))
        {
            return Ok(Producto);
        }
        else
        {
            return InternalServerError();
        }
}

在我的客户端我有这个:

 $.ajax({
    url: "/API/Producto/",
        method: "POST",
        data: EProducto,
        dataType: "json",
        type: "POST",
        success: function () {
            toastr.success("Correcto");
        },
            error: function (jqXHR, textStatus, errorThrown) {
            toastr.error(jqXHR.responseText);
        }
})

当系统检测到已复制的产品时,它无法获取自定义文本(Producto repetido)

我希望有人可以帮助我,谢谢。 最好的问候

2 个答案:

答案 0 :(得分:0)

在服务器端执行此操作:

Response.StatusCode = (int)HttpStatusCode.BadRequest;
var errors = new List<string>();
errors.Add("Error 1");
//...more errors if any
return Json(errors);

在客户端:

.ajax(
{   //code...
    error: function(xhr, textStatus, exceptionThrown) {
      var errorData = $.parseJSON(xhr.responseText);
      // Do whatever you need to
},

答案 1 :(得分:0)

$.ajax({
url: "/API/Producto/",
    method: "POST",
    data: EProducto, 
    dataType: "json", // return type of data from server - change it to text
    type: "POST",
    success: function () {
        toastr.success("Correcto");
    },
        error: function (jqXHR, textStatus, errorThrown) {
        toastr.error(jqXHR.responseText);
    }

})

  

弃用通知:从jQuery 3.0开始,jqXHR.success(),jqXHR.error()和jqXHR.complete()回调被删除。您可以使用jqXHR.done(),jqXHR.fail()和jqXHR.always()代替。

有关详细信息,请访问jquery.ajax