jfinal与bootstrap的登出实战详解


Posted in Javascript onNovember 27, 2017

前言:本篇推出“jfinal与bootstrap的登出实战”,旨在介绍如果通过a标签弹出登出确认框,然后发送退出请求到jfinal,然后再刷新页面的做法。主要难点在于1.如果通过a标签的内容弹出登出确认框,2.如何通过a标签刷新对应弹出的页面。

前端技术

1.构建a标签

<a href="${ctx}/mem/logout"  target="ajaxTodo" callback="ajaxDone" atitle="你确定要退出吗?" id="user_login_out" style="padding: 0 6px;">退出</a>

注意:

1. target=”ajaxTodo”,指定a标签要通过ajax发起请求。
2. callback=”ajaxDone”,指定a标签回调函数
3. atitle=”你确定要退出吗?”,指定确认信息

2.初始化a标签ajax事件

function initUI(_box) {
 var $p = $(_box || document);

 // dwz.ajax.js
 if ($.fn.ajaxTodo) {
  $("a[target=ajaxTodo]", $p).ajaxTodo();
 }
}

注意:

1. 页面加载完成后执行initUI方法,使target为ajaxTodo的a标签具有指定的ajaxTodo方法。

3.a标签的ajax请求

function ajaxTodo(url, callback) {
 var $callback = callback;
 if (!$.isFunction($callback)) {
  $callback = eval('(' + callback + ')');
 }

 var forwardUrl = window.location.href;
 if (url.indexOf("?") != -1) {
  url += "&forwardUrl=" + forwardUrl;
 } else {
  url += "?forwardUrl=" + forwardUrl;
 }
 $.ajax({
  type : 'POST',
  url : url,
  dataType : "json",
  cache : false,
  success : $callback,
  error : YUNM.ajaxError
 });
}

注意:

1. forwardUrl 记录登出的页面

4.为jquery对象增加ajaxTodo方法

$.fn.extend({
 ajaxTodo : function() {
 return this.each(function() {
  var $this = $(this);
  $this.click(function(event) {
  var url = unescape($this.attr("href")).replaceTmById($(event.target).parents(".unitBox:first"));
  YUNM.debug(url);
  if (!url.isFinishedTm()) {
   $.showErr($this.attr("warn"));
   return false;
  }
  var title = $this.attr("atitle");
  if (title) {
   $.showConfirm(title, function() {
   ajaxTodo(url, $this.attr("callback"));
   });
  } else {
   ajaxTodo(url, $this.attr("callback"));
  }
  event.preventDefault();
  });
 });
 },
});

5.回调函数

function ajaxDone(json) {
 YUNM.ajaxDone(json);
 if (json[YUNM.keys.statusCode] == YUNM.statusCode.ok || json[YUNM.keys.statusCode] == YUNM.statusCode.info) {
 // 如果指定了后调转页面,进行调转
 if (json.forwardUrl) {
  location.href = json.forwardUrl;
 }
 }
}

6.弹出weebox确认框

$.showConfirm = function(str, funcok, funcclose) {
 var okfunc = function() {
 $.weeboxs.close("yunm_confirm_box");
 funcok.call();
 };
 $.weeboxs.open(str, {
 boxid : 'yunm_confirm_box',
 contentType : 'text',
 showButton : true,
 showCancel : true,
 showOk : true,
 title : '确认',
 width : 280,
 type : 'wee',
 onopen : function() {
  init_ui_button();
 },
 onclose : funcclose,
 onok : okfunc
 });
};

function init_ui_button() {
 $("button.ui-button[init!='init']").each(function(i, o) {
 $(o).attr("init", "init"); // 为了防止重复初始化
 $(o).ui_button();
 });

}

jfinal技术

public void logout() {

 if (getSession().getAttribute("username") != null) {
  // 清除session
  getSession().removeAttribute("username");
 }

 ajaxDoneSuccess("登出成功!");

 renderJson();
 }

增加logout方法。

jfinal与bootstrap的登出实战详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
表单提交时自动复制内容到剪贴板的js代码
Mar 16 Javascript
jQuery学习笔记[1] jQuery中的DOM操作
Dec 03 Javascript
JS获取整个页面文档的实现代码
Dec 15 Javascript
javascript中match函数的用法小结
Feb 08 Javascript
完美实现仿QQ空间评论回复特效
May 06 Javascript
JQuery插件Marquee.js实现无缝滚动效果
Apr 26 Javascript
浅谈jQuery 选择器和dom操作
Jun 07 Javascript
jQuery筛选数组之grep、each、inArray、map的用法及遍历json对象
Jun 20 Javascript
jQuery实现的瀑布流加载效果示例
Sep 13 Javascript
JavaScript中的编码和解码函数
Feb 15 Javascript
vue中使用refs定位dom出现undefined的解决方法
Dec 21 Javascript
如何使用less实现随机下雪动画详解
Jan 02 Javascript
JQuery 又谈ajax局部刷新
Nov 27 #jQuery
Bootstrap实现翻页效果
Nov 27 #Javascript
jQuery Datatables表头不对齐的解决办法
Nov 27 #jQuery
JS使用贪心算法解决找零问题示例
Nov 27 #Javascript
Vue.js实现分页查询功能
Nov 15 #Javascript
JS实现网页抢购功能(触发,终止脚本)
Nov 27 #Javascript
JS基于贪心算法解决背包问题示例
Nov 27 #Javascript
You might like
DIY一个适配电脑声卡的动圈话筒放大器
2021/03/02 无线电
国王的咖啡这么大来头,名字的由来是什么
2021/03/03 咖啡文化
javascript与CSS复习(《精通javascript》)
2010/06/29 Javascript
javascript 星级评分效果(手写)
2012/12/24 Javascript
JavaScript中“基本类型”之争小结
2013/01/03 Javascript
Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
2014/06/24 Javascript
jQuery中deferred对象使用方法详解
2016/07/14 Javascript
CSS+jQuery实现简单的折叠菜单
2016/12/20 Javascript
利用iscroll4实现轮播图效果实例代码
2017/01/11 Javascript
快速解决处理后台返回json数据格式的问题
2018/08/07 Javascript
vue使用better-scroll实现下拉刷新、上拉加载
2018/11/23 Javascript
Vue项目打包部署到iis服务器的配置方法
2019/10/14 Javascript
jQuery实时统计输入框字数及限制
2020/06/24 jQuery
[58:12]Ti4第二日主赛事败者组 LGD vs iG 3
2014/07/21 DOTA
跟老齐学Python之Import 模块
2014/10/13 Python
解决Linux系统中python matplotlib画图的中文显示问题
2017/06/15 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
2018/08/07 Python
Python实现的读取/更改/写入xml文件操作示例
2018/08/30 Python
局域网内python socket实现windows与linux间的消息传送
2019/04/19 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
2019/07/23 Python
keras之权重初始化方式
2020/05/21 Python
Python 如何测试文件是否存在
2020/07/31 Python
JBL英国官网:JBL UK
2018/07/04 全球购物
英国国家美术馆商店:National Gallery
2019/05/01 全球购物
美国办公用品折扣网站:Shoplet.com
2019/11/24 全球购物
监理员的岗位职责
2013/11/13 职场文书
建筑系毕业生自我鉴定
2014/01/24 职场文书
竞聘书模板
2014/03/31 职场文书
群众路线党课主持词
2014/04/01 职场文书
中央空调节能方案
2014/06/15 职场文书
世界读书日的活动方案
2014/08/20 职场文书
2014国庆节商场促销活动策划方案
2014/09/16 职场文书
授权委托书
2014/09/17 职场文书
致800米运动员广播稿(10篇)
2014/10/17 职场文书
Mysql数据库表中为什么有索引却没有提高查询速度
2022/02/24 MySQL
Shell脚本一键安装Nginx服务自定义Nginx版本
2022/03/20 Servers