在asp.net上返回json错误无法正常工作

时间:2014-03-30 03:04:30

标签: asp.net json

我试图通过ajax调用来测试Json表示法中的错误。这是我的服务器方法

        [System.Web.Services.WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static string publicarError()
        {            
            try
            {
                throw new Exception("error");
            }
            catch (Exception ex)
            {
                Dictionary<string, object> error = new Dictionary<string, object>();
                error.Add("success", false);
                error.Add("message", "Something really bad happened");
                string output = JsonConvert.SerializeObject(error);
                return output;

            }
        }

这是我的ajax电话

 $.ajax({
                type: "POST",
                url: pageUrl + '/publicarError',
                data: '{valor: ' + $('#<%=classroomDropDownList.ClientID%>').val() + '}',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function () { alert('ok'); },
                error: function (xhr, textStatus, exceptionThrown) {

                    var json = xhr.responseText;
                    var result = [];
                    result = eval('(' + json + ')');
                    var errorMessages = [];
                    //this ugly loop is because List<> is serialized to an object instead of an array
                    for (var key in result) {
                        errorMessages.push(result[key]);
                    }
                    $('#result').html(errorMessages.join("<br />"));
                },

但是当我运行这个例子时,它总是输入succes函数,而不是错误一。

我不知道为什么。有什么错吗?

1 个答案:

答案 0 :(得分:2)

这是正常行为。您没有返回错误,您正在返回一个有效的JSON对象,因此它转到success函数。要转到error函数,您需要抛出异常。注释掉try ... catchthrow new Exception("error");会转到error功能。