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

标签 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) {

    }
});

这是我的 Controller :

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

我想知道我应该返回什么以获得内部错误?基本上什么时候调用这个错误函数?如果服务器发生错误或..?

关于成功,我如何向那里传递一些数据?

现实生活中的例子:

想象一下,我调用此 ajax 方法来删​​除一篇文章,当它被删除时,所以成功我想显示一些成功消息。如果失败,那么在我的操作中我会得到 success=false,我想显示一些其他消息,例如:失败。

如何实现?

最佳答案

您可以通过创建表示响应的对象来处理 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 通知。

关于c# - MVC ajax调用如何处理错误响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21481361/

相关文章:

c# - 手动加载依赖程序集

c# - Umbraco:在用户控件中列出子节点

c# - 在default.aspx中调用jquery

javascript - 在 AspNet 上使用 onClick 事件隐藏文本框而不刷新页面

javascript - 如何使用ajax在不刷新页面的情况下从数据库中检索数据

c# - 进程因 StackOverflowException 而终止

c# - 程序崩溃时捕获异常并妥善处理

javascript - GridView JavaScript

带有 #id 的 jQuery load() 不适用于 TEXTAREA

jquery - 如何使用jquery从2个json文件加载数据?