MVC ajax调用如何处理错误响应

时间:2014-01-31 13:33:08

标签: c# asp.net ajax asp.net-mvc asp.net-mvc-5

我对ajax调用有疑问:这是我的ajax调用:

$.ajax({
    url: "/Article/DeleteArticle/"+id,
    type: "GET",
    error: function (response) {

    },
    success: function (response) {

    }
});

这是我的控制器:

public ActionResult DeletePicture(int id)
{
    bool success = Operations.DeleteArticle(id);
    return null;
}

我想知道我回来的内容是什么?什么时候基本上调用这个错误函数?如果服务器上发生错误或..?

关于成功,我怎样才能传递一些数据?

现实生活中的例子:

想象一下,我把这个ajax方法称为删除文章,当它被删除时,所以我想成功地展示一些成功的消息。如果它失败了,那么在我的行动中我获得成功=假,我想展示一些其他消息,例如:失败。

如何实现?

2 个答案:

答案 0 :(得分:4)

您可以通过创建表示响应的对象来处理Ajax调用:

public class AjaxResponse
{
        public bool Success { get; set; }
        public string Message { get; set; }
    }
}

然后按如下方式返回:

public ActionResult DeletePicture(int id)
{
    // success failed by default
    var response = new AjaxResponse { Success = false };
    try 
    {
     bool success = Operations.DeleteArticle(id);
     response.Success = success;
     // Set a message for UI
     response.Message = success ? "Success" : "Failed";
     }
     catch
     {
      // handle exception
      // return the response with success false
      return Json(response, JsonRequestBehavior.AllowGet);
     }
     return Json(response, JsonRequestBehavior.AllowGet);
}

然后您可以传递数据并按如下方式处理:

$.ajax({
    url: "/Article/DeleteArticle/",
    type: "GET",
    data : { Id : id },
    dataType: 'json',
    error: function (response) {

    // Handle error from response.Success or response.Message

    },
    success: function (response) {

        // Handle error from response.Success or response.Message

    }
});

句柄错误可能只是将消息显示回HTML元素或弹出某种javascript通知。

答案 1 :(得分:1)

你可以使用它

public ActionResult DeleteArticle(int id)
{
    bool success = Operations.DeleteArticle(id);       

    return Json(success, JsonRequestBehavior.AllowGet);
}


$.ajax({
    url: "/Article/DeleteArticle/",
    type: "GET",
    data : { Id : id },
    dataType: 'json',
    error: function (response) {    
       if(response!=null && response.length!=0)
       {
         alert('error');
       }    
    },
    success: function (response) {  
       if(response) {
         alert('Success');
       }   
    }
});