MVC Ajax调用Action时-OnActionExecuting RedirectResult 无法跳转的处理办法
public class BaseController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (Session["userInfo"] == null)
{
if (filterContext.HttpContext.Request.IsAjaxRequest())
{
filterContext.Result = new HttpStatusCodeResult();
filterContext.HttpContext.Response.Write("/Desktop/Login/Index");
return;
}
else
{
filterContext.Result = new RedirectResult("/Desktop/Login/Index");
return;
}
}
base.OnActionExecuting(filterContext);
}
}
}
(function ($) {
//有可能导致jquery里面的done方法未定义;所以有时候可以全部注释掉;
var _ajax = $.ajax;
$.ajax = function (opt) {
var fn = {
error: function (XMLHttpRequest, textStatus, errorThrown) { },
}
if (opt.error)
fn.error = opt.error;
var _opt = $.extend(opt, {
error: function (XMLHttpRequest, textStatus, errorThrown) {
if (XMLHttpRequest.status == "499")
window.location.href = "/Desktop/Login/Index";
else
fn.error(XMLHttpRequest, textStatus, errorThrown);
}
});
_ajax(_opt);
};
})(jQuery); $.ajaxSetup({
statusCode: {
499: function (data) {
window.location.href = data.responseText;
}
}
});
$.ajax({
type: "POST",
url: "/desktop/language/index",
data: { language: getCookie("languageCode") },
datatype: "json",
success: function (returndata) {
//alert("second success");
}
}); //如果是Ajax.BeginForm,跳转到登陆页方式为如下:
@using (Ajax.BeginForm("GetSystemStatusTracking", "ReportQuery",
new AjaxOptions() { UpdateTargetId = "TRACKING_NEWLIST",
OnBegin = "showModal",
OnComplete = "hideModal",
OnFailure = "failureProcess"
}))
{
}
function failureProcess(data) {
if (data.status == 499)
window.location.href = (data.responseText == '') ? window.location.href = "/Desktop/Login/Index" : data.responseText;
}
特别注意:当用IIS发布时,客户端访问会报错“ 自定义错误模块不能识别此错误”,但调试时和本机发布本机访问都不会报错;
初步怀疑是服务器和客户端字体解析问题导致。代码需改为如下:
$.ajaxSetup({
statusCode: {
499: function (data) {
window.location.href = "/Desktop/Login/Index";
}
}
});
function failureProcess(data) {
if (data.status == 499) {
window.location.href = "/Desktop/Login/Index";
}
}
最新文章
- B/S工作原理
- logstash VS splunk
- Microsoft Community
- java ee 中文乱码的问题
- 转NodeJS的npm模块版本号 模式解析
- UITableView详解(转)
- iOS之多线程浅谈
- Hibernate criteria 混合sql语句多表关联时查询注意事项
- webapi Task
- trie从入门到入殓
- mysql 跨服务器复制数据库
- MySQL 栏位修改为区分大小写
- string的基本用法
- HTTP 04 web 服务器
- Oracle只读用户角色的建立
- 匿名内部类访问方法成员变量需要加final的原因及证明(转)
- .gitignore 失效问题解决
- Fb,tw等emoji相关
- 121. Best Time to Buy and Sell Stock买卖股票12
- centos6 安装 directAdmin
热门文章
- ZOJ 3827 Information Entropy(数学题 牡丹江现场赛)
- A Taxonomy for Performance
- hdu5396 Expression 区间dp +排列组合
- 小胖说事31------iOS 真机编译错误&;quot;“XXX”的 iPod&;quot; and run &;quot;XXX&;quot; again, or if &;quot;XXX&;quot; is still running
- 数据库操作语句大全(sql)
- GammaRay观察Qt程序的运行状况
- bootstrap table load数据
- Protected vs protected internal (Again) in c#
- P2120 [ZJOI2007]仓库建设 斜率优化dp
- JZOJ 1667 ( bzoj 1801 ) [ AHOI 2009 ] 中国象棋 —— DP