在jquery ajax中捕获错误消息-来自asp.net mvc操作
在使用jQueryAjax+asp.NETWeb服务之前,我能够获得实际的错误消息。但是,jquery$ajax错误中的相同代码不再有效 在我的.js中,我有在jquery ajax中捕获错误消息-来自asp.net mvc操作,asp.net,asp.net-mvc-3,jquery,Asp.net,Asp.net Mvc 3,Jquery,在使用jQueryAjax+asp.NETWeb服务之前,我能够获得实际的错误消息。但是,jquery$ajax错误中的相同代码不再有效 在我的.js中,我有 $.ajax({ contentType: 'application/json, charset=utf-8', type: "POST", url: "/Controller/DoSomething", data: JSON.stringify({ varname: var
$.ajax({
contentType: 'application/json, charset=utf-8',
type: "POST",
url: "/Controller/DoSomething",
data: JSON.stringify({ varname: varvalue }),
cache: false,
dataType: "json",
success: function (wo) {
alert('yay!');
},
error: function (xhr) {
alert('error');
if (xhr.responseText) {
var err = JSON.parse(xhr.responseText);
if (err) {
alert(err.Message);
}
else {
alert("Unknown server error, please try again!");
}
}
}
});
我的控制器里有
public JsonResult DoSomething(string folderno)
{
CustomObject obj;
//get the obj value from repository here
throw new Exception("my test error message");
return Json(obj);
}
我看了看萤火虫,似乎我正在
“JSON.parse:意外字符”错误。
我在这里试图做的是,当从存储库获取obj抛出异常时,假装出现这种情况。显然,returnjson(obj)
永远无法到达
我的问题是,我如何处理这种情况并在JS端捕获错误消息?我需要在控制器中执行某些操作吗
在我之前的Jquery+asp.NETWeb服务设置中,我可以在我的web服务方法中抛出一个异常(如我现在的操作所示),它将被困在我的ajax错误中,错误消息将被解析出来
现在,我似乎需要抓住这个例外,把自己打包……问题是怎么做?我需要在每个动作中都这样做吗?这似乎需要做很多工作。我要做的一件事是为AJAX调用创建一个通用返回对象。 比如:
public class AJAXReturn
{
public string Message { get; set; }
public object Result { get; set; }
}
public JsonResult DoSomething(string folderno)
{
CustomObject obj = new { FolderNo = folderno };
AJAXReturn result;
try
{
result.Message = "OK";
result.Result = obj;
}
catch (Exception ex)
{
result.Message = "ERROR";
result.Result = ex;
}
finally
{
return Json(result);
}
}
然后在返回函数中,将它们包装在异常(或创建一个通用异常处理程序)中,该异常处理程序的外观如下:
public class AJAXReturn
{
public string Message { get; set; }
public object Result { get; set; }
}
public JsonResult DoSomething(string folderno)
{
CustomObject obj = new { FolderNo = folderno };
AJAXReturn result;
try
{
result.Message = "OK";
result.Result = obj;
}
catch (Exception ex)
{
result.Message = "ERROR";
result.Result = ex;
}
finally
{
return Json(result);
}
}
编辑:在javascript端,只需检查结果中的data.Message==“OK”
。如果不正常,您可以显示特定的异常信息或任何您想要的信息
编辑2:对不起,我应该提到,这将始终在
success
回调中返回,因此请确保在那里对其进行分析。请参阅此处的问题,了解我最后的操作