【发布时间】:2015-01-30 12:47:38
【问题描述】:
我在 MVC4 中有一个 C# 项目。在这个项目中,我的一个控制器有一个由 Ajax 函数调用的方法:
[HttpPost]
public string EditPackage(int id, string newPkgName)
{
try{
//do logic here
return "OK";
}catch(Exception exc){
return "An error occurred, please try later! " + exc.Message;
}
}
此方法由以下 Ajax 函数调用,使用 jQuery:
$.ajax({
url: $(this).data('url'),
type: 'POST',
contentType: 'application/json; charset=utf-8',
traditional: true,
data: JSON.stringify({ id: id, newPkgName: newPkgName}),
success: function () {
location.reload(true);
successNotification("Package edited successfuly!");
},
error: function (message) {
errorNotification(message);
}
});
这段代码的问题在于,即使服务器在 catch 中返回了 return "An error occurred, please try later! " + exc.Message; 消息,成功函数总是被调用。
换句话说,无论我做什么,我都不会运行错误函数。
为了解决这个问题,我查看了官方文档:
但是,由于我对此并不熟悉,因此我无法理解任何参数,也无法有效地使用它们。
如何使用 Ajax、jQuery 和我的控制器创建包含所有可能信息的良好错误消息?
【问题讨论】:
-
你可以试试扔而不是返回
-
如果响应状态不是 OK(200) 则调用错误函数,但是如果您在服务器上捕获异常,则返回状态为 OK(200) 的响应,所以,简单不捕获异常
标签: javascript c# jquery ajax asp.net-mvc-4