form表单提交数据和删除文章时,TP的默认信息提示页面的看起来不是很好看,想要实现弹窗提示怎么做呢?

前端:可以使用前端的一个知识--iframe,iframe元素会创建包含另外一个文档的内联框架;target,规定在何处打开链接文档。

   另外想要实现一个好看的方便、能重复使用的弹窗就要开发一个弹窗插件了,这里推荐使用前端的弹窗插件sweetalert.js,为了方便、重复使用我们把它成封装一个函数,页面要引入sweetalert.js的css和js文件

后端:为了方便以后重复使用,先写一个公共函数,就是调用之前前端封装的函数弹出提示信息

一、form提交数据,前端HTML代码,要把iframe隐藏,否则会显示iframe在页面;form中target表示在iframe中打开form表单

  <iframe style="display: none" name="if"></iframe>
<form action="{:url('login/index')}" method="post" target="if">
<div class="panel loginbox">
<div class="panel-body">
<div class="form-group">
<div class="field field-icon-right">
<input type="text" name="username" id="username" placeholder="登录账号" required value="admin" />
<span class="icon icon-user margin-small"></span>
</div>
</div>
<div class="form-group">
<div class="field field-icon-right">
<input type="password" class="input input-big" name="password" id="password" placeholder="登录密码" required/>
<span class="icon icon-key margin-small"></span>
</div>
</div>
</div>
<div style="padding:30px;">
<input type="submit" id="button" class="button button-block bg-main text-big input-big" value="登录">
</div>
</div>
</form>

前端封装的函数

 /**
* 提示弹窗
* @param text 弹窗内容
* @param type 图标类型,默认null,可以填写success、error、warning、info、question
* @param bool showCancelButton 是否显示取消按钮
* @param callback 按下确认键后执行的函数
* @param all_callback 按到按钮之外,弹窗消失时执行函数
*/ function my_alert(text,type,callback,showCancelButton,all_callback) {
var now_text = text ? text : '你确定吗';
var now_type = type ? type : null;
var now_showCancelButton = showCancelButton ? showCancelButton : false;
var now_callback = callback ? callback : function () {};
var all_callback = all_callback ? all_callback : function (dismiss) {}; if (typeof(arguments[1]) == "function") {
now_type = null;
now_callback = arguments[1];
now_showCancelButton = arguments[2];
} swal({
text:now_text,
type:now_type,
showCancelButton:now_showCancelButton,
confirmButtonText:'确定',
cancelButtonText:'取消', }).then(function () {
now_callback();
},all_callback)
}

后端封装公共函数

 /**
* iframe 窗口调用父窗口:parent.functionName();
* @param $data 弹窗信息
* @param string $type 弹出框的类型
* @param bool $is_reload 是否刷新
* @param string $url 新页面打开地址
* @param
*/
function php_alert($data,$type = 'error', $is_reload = false, $url = ''){
if(empty($url) && !$is_reload){
echo "<script>parent.my_alert('$data','$type')</script>";
die;
}else if (empty($url) && $is_reload){
echo "<script>parent.my_alert('$data','$type',function() {parent.location.reload();})</script>";
}else{
echo "<script>parent.my_alert('$data','$type',function() {parent.location.href = '$url';})</script>";
die;
}
}

使用,回调地址要写模块/控制器/方法,如果不写模块admin会把控制器article作为模块,报article模块不存在

 if($save){
//$this->success('添加文章成功','index');
php_alert('添加文章成功!','success',false,'/admin/article/index');
}else{
php_alert('添加文章失败!','error',false);
//$this->error('添加文章失败','index');
}

弹出validate验证信息

 $validate = \think\Loader::validate('Article');
if($validate->scene('update')->check($data)){ }else{
$msg = $validate->getError();
php_alert($msg,'error',false);
}

二、删除文章、管理员

后端封装函数,因为删除数据时页面会跳转的,页面没有sweetalert插件的相关文件的,所以要输出引入相关文件

 /**
* 自定义tp自带的跳转提示页;
* @param data 弹窗信息
* @param string $type 弹出框的类型
* @param string callable 新页面打开地址
*/
function alert_msg($text='',$type='error',$callback=''){
echo '<meta charset="utf-8" /><link href="/public/static/common/css/sweetalert.min.css" rel="stylesheet"><script src="/public/static/admin/js/jquery_002.js"></script><script type="text/javascript" src="/public/static/common/js/sweetalert.min.js"></script> <script src="/public/static/admin/js/my_config.js"></script>';
echo "<script>window.onload=function () {my_alert('$text','$type',function() {location.href = '$callback';})}</script>";
die;
}

调用

 public function del(){
$del = db('admin')->where('id',input('id'))->delete();
if($del){
alert_msg('删除管理员成功!','success','/admin/admin/index');
}else{
alert_msg('删除管理员失败!','error','/admin/admin/index');
}
}

thinkPHP5.0使用form表单提交数据和删除文章,不用TP的提示页面,使用弹出提示信息的更多相关文章

  1. js模拟form表单提交数据, js模拟a标签点击跳转,避开使用window.open引起来的浏览器阻止问题

    js模拟form表单提交数据, js模拟a标签点击跳转,避开使用window.open引起来的浏览器阻止问题 js模拟form表单提交数据源码: /** * js模拟form表单提交 * @param ...

  2. springboot框架中集成thymeleaf引擎,使用form表单提交数据,debug结果后台获取不到数据

    springboot框架中集成thymeleaf引擎,使用form表单提交数据,debug结果后台获取不到数据 表单html: <form class="form-horizontal ...

  3. Form表单提交数据的几种方式

    一.submit提交 在form标签中添加Action(提交的地址)和method(post),且有一个submit按钮(<input type='submit'>)就可以进行数据的提交, ...

  4. form表单提交数据的数据格式

    form表单提交的数据格式默认是 enctype="application/x-www-form-urlencoded"这样将input框的数据与input框的name属性以键值对 ...

  5. 关于AJAX与form表单提交数据的格式

    一 form表单传输文件的格式: 只有三种: multipart/form-data 一般用于传输文件,图片文件或者其他的. 那么其中我们默认的是application/x-www-form-urle ...

  6. form表单提交数据给后台

    1.完整登录示例 1. form表单往后端提交数据注意三点 1.所有获取用户输入标签都应该放在form表单里面 2.action属性控制往哪儿提交,method一般都是设置成post 3.提交按钮必须 ...

  7. asp.net.mvc 中form表单提交控制器的2种方法和控制器接收页面提交数据的4种方法

    MVC中表单form是怎样提交? 控制器Controller是怎样接收的? 1..cshtml 页面form提交 (1)普通方式的的提交

  8. 关于form表单提交数据后不跳转页面+ajax接收返回值的处理

    1.前台的form表单建立,注意action.enctype的内容, 2.通过添加一个隐藏的iframe标签使form的target指向iframe来达到不跳转页面的效果,同时需要在js里获取ifra ...

  9. iframe+form表单提交数据

    <h6>基于iframe+Form表单</h6> <iframe id="iframe" name="ifra" onclick= ...

随机推荐

  1. 把文档转化为PDF再用PS处理PDF

    最近工作中遇到类似下面这样的一个文档. 文档当前设置的是A4 横版打印,可以明显的看到打印的分界线,这样直接打印出来,是没有下面那行“bbbbbbbbbbbbbbbbbb”的,怎么办?可以通过 页面布 ...

  2. CF1030F Putting Boxes Together

    昨晚的比赛题.(像我这种蒟蒻只能打打div2) 题意 给你$n$个物品,每一个物品$i$,有一个权值$w_i$和一个位置$a_i$,定义移动一个物品$i$到位置$t$的代价为$w_i * \left ...

  3. CodeForces 404D Minesweeper 1D (DP)

    题意:给定一个序列,*表示雷,1表示它旁边有一个雷,2表示它旁边有两个雷,0表示旁边没有雷,?表示未知,求有多少情况. 析:dp[i][j] 表示第 i 个放 j 状态,有多少种情况,然后很简单的DP ...

  4. WebGoat系列实验Buffer Overflows & Code Quality & Concurrency

    WebGoat系列实验Buffer Overflows & Code Quality & Concurrency Off-by-One Overflows 实验需要访问OWASP Ho ...

  5. WPF之MVVM模式(1)

    MVVM模式 一.MVVM模式概述 MVVM Pattern : Model\View\ViewModel View:视图.UI界面 ViewModel:ViewModel是对Model的封装,通过一 ...

  6. HeadFirst设计模式中的笔记

    1.『策略模式』 定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户. OO基础:抽象 封装 多态 继承 OO原则:封装变化 多用组合,小用继承   针对接口编 ...

  7. C# Winform欢迎窗体实现()

    方法一.program.cs 中先启动欢迎窗体,然后注册程序运行空闲去执行主程序窗体相应初始化代码 static void Main(string[] args) { Application.Enab ...

  8. [51nod1222] 最小公倍数计数(莫比乌斯反演)

    题面 传送门 题解 我此生可能注定要和反演过不去了--死都看不出来为啥它会突然繁衍反演起来啊-- 设\(f(n)=\sum_{i=1}^n\sum_{j=1}^n[{ij\over\gcd(i,j)} ...

  9. linux硬盘IO优化相关资料整理

    内核相关参数 相关内核参数,有条件的话可以修改参数测试验证一下. 1./proc/sys/vm/dirty_ratio 这个参数则指定了当文件系统缓存脏页数量达到系统内存百分之多少时(如10%),系统 ...

  10. 剑指offer —— 替换空格

    1.问题:请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 2.思路:可能首先想到的应该就是 ...