ajax调用返回不同的数据类型?

时间:2018-03-23 18:54:39

标签: ajax asp.net-mvc

我有以下ajax调用:

                $.ajax({
                type: "post",
                dataType: "html",
                url: '@Url.Content("~/RBA/Tools/_Actions")',
                data: $("#actionForm").serialize(),
                success: function (response) {
                    debugger;

                    $("#DetailsEdit").removeClass('zoomInDown');
                    $("#DetailsEdit").addClass('flipInX');

                    $("#DetailsRefresh").html(response);
                    $("#actionPlaceholder").hide();

                    $("#dashSpinner").hide();

                },
                error: function (response) {
                    debugger;

                    $("#dashSpinner").hide();
                    swal({
                        title: "Error",
                        text: response.responseText,
                        type: "error",
                        showConfirmButton: true
                    });

                }

            });

我遇到了错误部分的问题,因为它正在向我返回html。当我在本地计算机上运行MVC时,我在弹出框中正确显示错误消息。当我将应用程序部署到另一台服务器时,我收到一些冗长的HTML消息,这真的很尴尬。我该如何解决这个问题?

以下是此ajax调用正在调用的控制器的catch异常块:

            catch (Exception e)
        {
            log.Error(e);

            if (e.Message.Contains("Is not a valid cause category."))
                error = "The selected category is not a valid category. Please choose another category.";
            else
                error = "You cannot take this type of action.";

            Response.StatusCode = 500;

            return Json(error);
        }

我知道我在ajax调用中的dataType被列为html,我需要ajax调用才能在成功时返回html,以便它可以调出另一个视图。但在我的错误中,我想得到一个字符串,以便它可以显示消息到sweetalert框。我该如何做到这一点?

提前致谢

1 个答案:

答案 0 :(得分:1)

使用此:

return new HttpStatusCodeResult(500, error);

这将返回500 INTERNAL SERVER ERROR结果,并将错误消息作为响应正文。

可能需要包含以下代码行,以告知IIS让您返回500:

Response.TrySkipIisCustomErrors = true