![](/img/trans.png)
[英]Ajax Call to load different categories in WordPress not being picked up for my custom filter page
[英]Why is my exception not picked up by jquery ajax call to controller?
我正在一个按钮上,该按钮在asp.net mvc控制器中调用一个动作。 我正在尝试捕获错误,并以一种体面的方式将其显示给用户,但似乎无法弄清楚如何正确地做到这一点。 每当我在控制器中强加一个异常(出于测试目的)时,我的ajax调用的.sucess部分仍会触发。 这是我的ajax电话:
$(document).ready(function() {
$("#del").on("click", function() {
var message;
$.ajax({
url: "@Url.Action("DeleteImage", "UnitSummary")",
type: "GET",
dataType: "json",
data: { unitId: "@Model.UnitId" },
error: function(msg) {
message = msg;
$('#delsection').hide().html('<div class="alert alert-danger"><strong>Ouch!</strong> ' + message.statusText + '</div>').fadeIn('slow');
},
success: function(msg) {
message = msg;
$('#delsection').hide().html('<div class="alert alert-success"><strong>Success!</strong> Image was deleted.</div>').fadeIn('slow');
}
});
});
这是我的控制器:
[HttpGet]
public ActionResult DeleteImage(int unitId)
{
try
{
throw new Exception("Forced error");
UnitClient.UpdateUnitImage(unitId, new byte[0]);
}
catch (Exception e)
{
Log.Error(e);
return Json(new { e.Message }, JsonRequestBehavior.AllowGet);
}
return Json(new JsonResult(), JsonRequestBehavior.AllowGet);
}
即使未删除图像,也总是会调用成功。 我在这里想念什么?
每当我在控制器中强加一个异常(出于测试目的)时,我的ajax调用的.sucess部分仍会触发。
以下代码行不是jQuery的ajax
解释为来自服务器的错误响应的异常(因此不会调用error
回调), 而是常规的200 OK
响应:
return Json(new { e.Message }, JsonRequestBehavior.AllowGet);
改为这样做:
return new HttpStatusCodeResult(HttpStatusCode.BadRequest, e.Message);
这是HTTP状态代码起作用的地方, BadRequest
是HTTP错误状态代码。
这是有关BadRequest
的更多信息:
等效于HTTP状态400。BadRequest指示服务器无法理解该请求。 当没有其他错误适用,或者确切的错误未知或没有自己的错误代码时,将发送BadRequest。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.