我有一个网站,其中ajax调用将从Asp.Net-Mvc操作中获取一些Json数据。
现在我正在尝试植入错误处理。
但我仍然坚持如何做到这一点。
我找到的最简单的方法是捕获控制器操作中的异常,并返回一个带有错误消息的Json对象。然后在ajax succes函数中,如果它的excist,我可以输出错误消息。
但我不确定这是最好的方法,所以我尝试使用ajax调用的错误功能。
我的代码是这样的:
$.ajax(
{
type: "POST",
url: "/home/geterror",
data: "",
dataType: "json",
success: function(result)
{
//do something
},
error: function(XMLHttpRequest, textStatus, errorThrown)
{
alert(XMLHttpRequest.responseText + " "+ XMLHttpRequest.status +" "+ textStatus +" "+ errorThrown);
}
});
我看到XMLHttpRequest.responseText是一个标准的asp.net错误页面,标题中包含我的errormessage。 errorThrown总是未定义的。 现在我试图从XMLHttpRequest.responseText中获取标题。但我不知道该怎么做。 (我试过的一切都失败了......) 因此,如果有人有任何消化,或更好的方法来处理Ajax调用错误......
谢谢, 布鲁诺
答案 0 :(得分:3)
在error
回调中处理错误处理要好得多。要让jQuery将其检测为错误,您需要将HTTP response code设置为某个4xx或5xx。我不知道ASP.NET所以请耐心等待,但是你需要这样的效果。
Response.code = '401'
Response.text = JSON({ message: 'An error occurred.', ... })
在客户端,parse the JSON response。
$.ajax({
...
error: function(request, status, error) {
var result = JSON.parse(request.responseText);
alert(result.message);
});
});
答案 1 :(得分:3)
答案 2 :(得分:2)
public ActionResult Index()
{
try
{
// Do something
return Json(new { status = true, errorMessage = "" });
}
catch (SomeSpecialExceptionYouWantToHandle e)
{
return Json(new { status = false, errorMessage = e.Message });
}
}
和ajax电话:
$.post('/home/index', { }, function(result) {
if (result.status) {
alert('success');
} else {
alert(result.errorMessage);
}
}, 'json');