显示JSON返回的错误消息

时间:2013-02-21 15:37:01

标签: javascript jquery asp.net asp.net-mvc asp.net-mvc-4

我需要显示 Json 返回的消息。

在控制器中,抛出异常并捕获到catch块。我正在返回错误错误消息。

Ajax 中,成功部分始终执行。但如果我的 webservice 出错,我就不想执行正常操作了。相反,我想显示一条错误消息。

我怎么能做到这一点?

我的代码如下:

控制器

[HttpPost]
public JsonResult DeleteClientRecord()
{

    bool result = true;
    try
    {
        result = ClientCRUDCollection.DeleteClient(deleteClientId);

    }
    catch (Exception ex)
    {

        return Json(ex.Message, JsonRequestBehavior.AllowGet);
    }

    return Json(new { result }, JsonRequestBehavior.AllowGet);
}

AJAX Call

$("#YesDelete").click(function () {
    $.ajax({
        type: "POST",
        async: false,
        url: "/Client/DeleteClientRecord",
        dataType: "json",
        error: function (request) {
            alert(request.responseText);
            event.preventDefault();
        },
        success: function (result) {
            // if error from webservice I want to differentiate here somehow
            $("#Update_" + id).parents("tr").remove();
            $('#myClientDeleteContainer').dialog('close');
            return false;
        }
    });

});

请允许任何人帮助我。

2 个答案:

答案 0 :(得分:8)

[HttpPost]
public JsonResult DeleteClientRecord()


{

         bool result = true;
         try
         {
            result = ClientCRUDCollection.DeleteClient(deleteClientId);
         }
         catch (Exception ex)
         {
            return Json(new { Success="False", responseText=ex.Message});
         }

    return Json(new { result }, JsonRequestBehavior.AllowGet);

}

答案 1 :(得分:1)

要显示错误消息,您应该在AJAX调用中的成功范围之后添加错误范围,如下所示:

$("#YesDelete").click(function () {
    $.ajax({
        type: "POST",
        async: false,
        url: "/Client/DeleteClientRecord",
        dataType: "json",
        error: function (request) {
            alert(request.responseText);
            event.preventDefault();
        },
        success: function (result) {
            // if error from webservice I want to differentiate here somehow
            $("#Update_" + id).parents("tr").remove();
            $('#myClientDeleteContainer').dialog('close');
            return false;
        }
        error: function (xhr) {alert(JSON.parse(xhr.responseText).Message); }
    });
});