zoukankan      html  css  js  c++  java
  • jq ajax 重写 登录过期等待执行

    //该代码主要实现旧系统已经挺庞大了,没办法去改变所有的页面的操作方式,
    并且一定要做操作是登录失效执行又不能中断跳出循环,很难调整架构的情况

    (function ($) { //首先备份下jquery的ajax方法 var $oajax = $.ajax; //重写jquery ajax保留旧方法,用于执行判断是否登录 $.oajax = function (opt) { $oajax(opt); }; //重写jquery的ajax方法 $.ajax = function (opt) { console.log("执行了重写Ajax"); //ajax回调方法 var ajax = function() { //备份opt重载方法 var fn = { error: function(XMLHttpRequest, textStatus, errorThrown) {}, success: function(data, textStatus) {}, beforeSend: function(XHR) {}, complete: function(XHR, TS) {} } if (opt.error) { fn.error = opt.error; } if (opt.success) { fn.success = opt.success; } if (opt.beforeSend) { fn.beforeSend = opt.beforeSend; } if (opt.complete) { fn.complete = opt.complete; } if (opt.nobeforeSend == undefined) { opt.nobeforeSend = true; } //扩展增强处理 var oopt = $.extend(opt, { error: function(XMLHttpRequest, textStatus, errorThrown) { //console.log("出现错误了"); //默认处理方法 fn.error(XMLHttpRequest, textStatus, errorThrown); }, success: function(data, textStatus) { //console.log("执行成功了"); fn.success(data, textStatus); }, beforeSend: function(XHR) { //console.log("ajax之前就执行了"); fn.beforeSend(XHR); }, complete: function(XHR, TS) { //console.log("执行完成"); //默认处理方法 fn.complete(XHR, TS); } }); return $oajax(oopt); }; //指意 用于不需要检测是否需要登录 if (!opt.nobeforeSend) { //检查系统登录情况 var islogin = CheckIsLogin(); if (islogin == true) { return ajax(); } //调用弹窗 top.OpenDialog(); //定时检测是否已经执行登录,等待执行 var it = setInterval(function() { if (top.IsContinueLoad == true) { clearInterval(it); return ajax(); } }, 100); } else { return ajax(); } }; })(jQuery); function CheckIsLogin() { var islogin = false; //用旧ajax执行,避免死循环 $.oajax({ url: "/Login/IsLogin", type: "get", async: false, dataType: "json", success: function (data) { islogin = data; top.IsContinueLoad = islogin; }, error: function (XMLHttpRequest, textStatus, errorThrown) { console.error("检查登录出现异常,状态:" + textStatus); console.log(XMLHttpRequest); console.log(errorThrown); //top.IsContinueLoad = false; } }); return islogin; };

      

  • 相关阅读:
    使用jQuery修改动态修改超链接
    360安全检测出的WordPress漏洞的修复方法
    jQuery未定义错误原因(jQuery is not define)
    MySQL授权命令grant的使用方法
    .htaccess伪静态(URL重写)绑定域名到子目录实现子站点
    Ubuntu14.04配置3389远程桌面连接
    [20190531]ORA-600 kokasgi1故障模拟与恢复.txt
    [20190531]建立job与commit.txt
    [20190530]ORACLE 18c
    [20190530]oracle Audit文件管理.txt
  • 原文地址:https://www.cnblogs.com/zengtianli/p/9081659.html
Copyright © 2011-2022 走看看