我试图通过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函数,而不是错误一。
我不知道为什么。有什么错吗?
答案 0 :(得分:2)
这是正常行为。您没有返回错误,您正在返回一个有效的JSON对象,因此它转到success
函数。要转到error
函数,您需要抛出异常。注释掉try ... catch
和throw new Exception("error");
会转到error
功能。