我有一个像这样的ajax帖子:
$.ajax({
type: "post",
dataType: "html",
url: "/MyController/MyAction",
data: AddAntiForgeryToken({
SomeValue: "Abc"
}, "#FormIdFromWhereToCopyAntiForgeryTokenFrom"),
success: function (response) {
if (response === "True") {
//do something
} else {
//call the function to try again in 10 seconds.
}
},
error: function (e) {
//call the function to try again in 10 seconds.
}
});
现在在某些情况下,此函数可能会返回错误,这是非常罕见的情况,但有可能,我想对其进行处理。出于这个问题的目的,我认为深入研究它们并不重要。无论如何,在我的服务器端,我会检查这种情况下是否发生错误。我捕获了它,然后返回一个通常告诉浏览器刷新自身的响应。但是由于这是一个ajax调用,所以不会这样做。这是该代码:
public class CustomExceptionHandler : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
var exception = filterContext.Exception;
if (exception != null)
{
var exceptionType = exception.GetType();
var someType= typeof(SomeExceptionType);
if (exceptionType.IsInstanceOfType(someType) || someType == exceptionType)
{
filterContext.ExceptionHandled = true;
filterContext.Result = new RedirectResult(filterContext.HttpContext.Request.RawUrl);
return;
}
}
}
}
正如您在上面看到的那样,其目的是告诉页面刷新自身,之后问题将得到解决。但是,我不确定如何在错误部分中检入我的JavaScript,即服务器已发送回重定向结果,因此我可以告诉浏览器进行刷新。
我要查看标题还是其他内容?您能举个例子来解决这个问题吗?
答案 0 :(得分:0)
您可以简单地设置超时以刷新页面,如下所示:
else {
//call the function to try again in 10 seconds.
settimeout(function(){
location.reload();
}, 10000);
}
还是我误解了这个问题?