【发布时间】:2016-03-26 13:04:54
【问题描述】:
我有一个复杂类型,当我执行各种操作时会返回它。我想知道如何传回自定义 JSON 对象以显示任何错误。考虑以下代码
业务层
public ResultObject StartJob(string jobName){
...
return new ResultObject{ErrorMessage = "Job cannot be started due to ..."};
}
控制器
[HttpPost]
public ActionResult StartJob(string jobName){
var resultObject = BusinessLayer.StartJob(jobName);
if (resultObject.HasErrors){
return Json(new {success = false, message = resultObject.message}, JsonRequestBehavior.AllowGet);
}
else{
return Json(new {success = true}, JsonRequestBeahvior.AllowGet);
}
}
当我执行 ajax 发布时,尽管我返回了 success = false,ajax 调用仍然成功并且 jQuery 没有调用 error() 方法。
这种类型的模式会重复多次。
【问题讨论】:
-
在这种情况下,检查客户端的成功值,当值为 false 时,调用 error() 方法中会调用的内容。
if(data.success){...}else{ myerror(data.message);} -
Jquery 不会查看您的自定义 json 对象成功标志来确定调用是否成功,而是查看返回的 http 状态代码。在您的实例中,将返回 200 OK 响应,因此不会调用错误处理程序。正如@Nkosi 提到的,您可以在 ajax 事件的成功处理程序中检查 data.success 标志。
标签: c# json asp.net-mvc