不显眼的 AJAX 调用未达到失败,而是在控制台中输出状态代码
本文关键字:控制台 输出 代码 状态 AJAX 调用 未达到 失败 不显眼 | 更新日期: 2023-09-27 17:57:06
我正在使用不显眼的ajax,当它到达我的自定义授权标签时,状态代码已设置,并且我已经准备好了json数据,但是当它返回信息时,状态代码在控制台中被捕获并说例如,"无法加载资源:服务器响应状态为403(禁止)"。 我在失败 ajax 选项中放置了警报,但那里没有触发任何内容。似乎它没有将状态代码错误视为失败的 ajax 调用。 如何处理 onFailure ajax 选项中的状态代码错误?
if (filterContext.HttpContext.Request.IsAjaxRequest())
{
var urlHelper = new UrlHelper(filterContext.RequestContext);
filterContext.HttpContext.Response.StatusCode = 403;
filterContext.Result = new JsonResult()
{
Data = new
{
Error = "NotAuthorized",
LogOnUrl = urlHelper.Action("AccessDenied", "Error", new { area=""})
},
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
这是我的自定义授权属性。
@Ajax.ActionLink("Company", "Company", "Admin", null, new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "centerAdmin", HttpMethod = "POST", OnComplete = "Oncomplete", OnSuccess = "OnSuccess", OnFailure = "OnFailure" })
我的阿贾克斯不显眼的电话
<script>
function OnSuccess(ajaxContext)
{
alert("dfgsdfgsdfgsdfgfdgsdfgddf");
}
function OnFailure(ajaxContext) {
alert("dfgsdfsdfgdfgsgsdf");
}
function Oncomplete(ajaxContext) {
alert("dfgsddfffffffffffffffffffffgsdf");
}
简单的警报,以查看它是否触发了任何这些事件。
由于您可能厌倦了我用更多问题回答您的问题,因此可以尝试一下。它至少应该落入您的 OnFailure 处理程序中。不要将结果设置为 json 对象,而是将其设置为 HttpStatusCodeResult。
filterContext.Result = new HttpStatusCodeResult((int)HttpStatusCode.Forbidden, "You are not authorized to access this page!"); // Set whatever status code is appropriate.
不确定是否要传递登录 url 或其他 json 参数,但这应该是一个开始。我认为您不需要设置响应的状态代码。
$(function () {
$(document).ajaxError(function (e, xhr) {
debugger;
if (xhr.status == 403) {
alert("403");
}
alert("not 403");
});
});
经过一番研究,我遇到了这个代码片段,它似乎暂时解决了我的问题。