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";
  }
}

 

 

MVC Ajax调用Action时-OnActionExecuting RedirectResult 无法跳转的处理办法的更多相关文章

  1. 爱上MVC~ajax调用分部视图session超时页面跳转问题

    回到目录 这个问题出现了很多年了,都没有解决,问题是这样的,有一个需要授权才可以访问的分部视图,在一个view中使用ajax的方法去调用它,然后更新页面的局部DIV,这时,如果你长时间不操作,sess ...

  2. mvc ajax访问后台时session过期无法跳转到Login页面问题解决

    public class BaseController : Controller { protected User UserInfo { set { Session["UserInfo&qu ...

  3. asp.net mvc 使用Ajax调用Action 返回数据【转】

      使用asp.net mvc 调用Action方法很简单. 一.无参数方法. 1.首先,引入jquery-1.5.1.min.js 脚本,根据版本不同大家自行选择. <script src=& ...

  4. Asp.Net MVC ajax调用 .net 类库问题

    如果你还在为 ajax 调用 .net 类库还束手无策的话,相信这篇博客将帮助你解决这个世纪问题! 因为Visual Studio 内置了asp.net mvc ,不过当你添加asp.net mvc项 ...

  5. Struct2_使用Ajax调用Action方法并返回值

    一.Login.jsp 1.<head>引入jquery: <script type="text/javascript" src="http://aja ...

  6. Spark为什么只有在调用action时才会触发任务执行呢(附算子优化和使用示例)?

    Spark算子主要划分为两类:transformation和action,并且只有action算子触发的时候才会真正执行任务.还记得之前的文章<Spark RDD详解>中提到,Spark ...

  7. 使用jQuery的ajax调用action的例子

    直接使用ajax请求会比较繁琐,但是jQuery为我们提供了简单使用ajax的方法. 下面是一个在jQuery easyUI中,利用ajax请求,使下拉菜单关联文本框的例子.其中ajax请求就是8-1 ...

  8. 通过Web API调用Action时各种类型输入参数传递值的方法

    本人微信公众号:微软动态CRM专家罗勇 ,回复280或者20180906可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . Dy ...

  9. SSH框架下ajax调用action并生成JSON再传递到客户端【以get和post方式提交】

    需要完成的任务: 主要是把JSP页面上图片ID传给服务器端,服务器读取cookie看是否有username,如果有则根据ID读取MongoDB数据库,读出图片URL,再存放到mysql中的collec ...

随机推荐

  1. Bitmap工具类BitmapHelper

    BitmapHelper 提供一些获取本地缩略图,获取网络图片.dp与px的相互转换等方法. import java.io.ByteArrayInputStream; import java.io.B ...

  2. C++ Sleep Function 使用方法 Sleep(-1)

    <span style="font-size:18px;">//==================================================== ...

  3. Oracle Study之--Oracle 11gR2通过RMAN克隆数据库

    Oracle Study之--Oracle 11gR2通过RMAN克隆数据库 Purpose of Database Duplication A duplicate database is usefu ...

  4. 辛星浅谈mysql中的数据碎片以及引擎为MyISAM下的操作

    对于mysql中的数据碎片,事实上和我们删除数据是息息相关的,删除数据的时候必定会在数据文件里造成不连续的空白空间,对于少量的数据的删除,并不会产生多少的空白空间.假设在一段时间内的大量的删除操作,会 ...

  5. 如何删除 mac 系统信息下的安装记录

    方法:在finder中:Command+Shift+G 打开 /Library/Receipts/InstallHistory.plist 所有的记录都在 InstallHistory.plist 文 ...

  6. ios dyld: Library not loaded: @rpath/xxx.framework/xxx 之根本原因

    碰到问题 dyld: Library not loaded: @rpath/xxx.framework/xxx Referenced from: /var/containers/Bundle/Appl ...

  7. 数据库html 数据的分句

    Python 中文分句 - CSDN博客 https://blog.csdn.net/laoyaotask/article/details/9260263 # 设置分句的标志符号:可以根据实际需要进行 ...

  8. side-stepping the Global Interpreter Lock by using subprocesses instead of threads

    16.6. multiprocessing — Process-based “threading” interface — Python 2.7.14 documentation https://do ...

  9. DeepDive is a system to extract value from dark data.

    DeepDive is a system to extract value from dark data. http://deepdive.stanford.edu/

  10. Linux I2C设备驱动编写(一)【转】

    本文转载自:http://blog.csdn.net/airk000/article/details/21345457 在Linux驱动中I2C系统中主要包含以下几个成员: I2C adapter 即 ...