jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)


Posted in Javascript onMay 27, 2016

弹出层主要用于展示丰富的页面信息,还有一个更好的应用是弹出表单层丰富交互应用。常见的应用有弹出登录表单层,用户提交登录信息,后台验证登录成功后,弹出层消失,主页面局部刷新用户信息。本文我们将给大家介绍如何使用jQuery+Ajax+PHP弹出层异步登录的应用。

jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)

效果展示        源码下载

HTML

由于本例UI部分使用了Bootstrap,以及使用jQuery插件,因此需要事先载入相关文件,推荐大家使用相关的CDN资源。

<link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap.min.css"> 
<link rel="stylesheet" href="hwLayer.css">

接着,我们在html主体部分放置触发弹出层的按钮链接,以及弹出层主体内容。以下是HTML主要代码:

<a href="#0" class="btn btn-danger btn-lg" id="form-btn" data-show-layer="hw-layer-login" role="button">点击弹出登录表单</a> 
<div id="result"></div> 
<div class="hw-overlay" id="hw-layer-login"> 
<div class="hw-layer-wrap"> 
<button type="button" class="close hwLayer-close" aria-label="Close"><span aria-hidden="true">×</span></button> 
<h3 class="hw-layer-title">用户登录</h3> 
<div class="row"> 
<form class="form-horizontal" action="login.php" method="post" id="login-form"> 
<div class="form-group"> 
<div class="input-group"> 
<div class="input-group-addon"><i class="glyphicon glyphicon-user"></i></div> 
<input type="text" class="form-control" name="user" id="user" placeholder="请输入用户名"> 
</div> 
</div> 
<div class="form-group"> 
<div class="input-group"> 
<div class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></div> 
<input type="password" class="form-control" name="password" id="password" placeholder="请输入密码"> 
</div> 
</div> 
<div class="form-group"> 
<div class="col-md-11 col-md-offset-1"> 
<button type="submit" class="btn btn-success hwLayer-ok">登录</button> 
<span id="msg">用户名:helloweba,密码:123</span> 
</div> 
</div> 
</form> 
</div> 
</div> 
</div>

上述代码中,#result用来展示用户信息,实际应用中,我们要在主网页中显示登录后的用户名等相关信息。#hw-layer-login是弹出层内容,默认是不可见的,它包含了一个登录表单,相关CSS样式请大家参阅Bootstrap官网。

jQuery

我们在点击页面中的链接或按钮后,会调用hwLayer插件,触发登录弹出层。先加载jQUery和hwLayer插件。

<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script> 
<script src="jquery.hwLayer.js"></script>

然后,调用hwLayer插件。

$(function(){ 
$('#form-btn').hwLayer({ 
width: 480, 
tapLayer: false 
}); 
});

现在,弹出层出来了,而关键的部分也来了,我们在填写好账号信息,点击登录后,会发生什么?很显然,作为表单提交事件,我们先要验证前端输入的合法性,这里我只是简单的验证输入不能为空的情况。然后提交Ajax,将用户名和密码内容提交给后端login.php来处理。login.php它会验证我们填写的账号信息是否正确,并且将处理的结果以json格式返回给前端。那么当前端收到登录成功的信息时,将登录结果用户名和登录时间显示在主页面#result上,即实现了大家常说的局部刷新效果,同时应该关闭弹出层。

$(function(){ 
$(".hwLayer-ok").on('click', function(event) { 
event.preventDefault(); 
var user = $('#user').val(); 
var pass = $('#password').val(); 
if(user==''){ 
$('#msg').addClass('text-danger').text('用户名不能为空!'); 
return false; 
} 
if(pass==''){ 
$('#msg').addClass('text-danger').text('密码不能为空!'); 
return false; 
} 
$.ajax({ 
url: 'login.php', 
type: 'POST', 
dataType: 'json', 
data: {username: user,password: pass}, 
beforeSend: function(){ 
$('#msg').addClass('text-success').text('正在登录...'); 
$(".hwLayer-ok").attr('disabled',true); 
}, 
success: function(res){ 
if(res.code==1){ //登录成功 
$('#result').html('欢迎您,' + res.username + ',登录时间:' + res.logintime); 
$('#msg').removeClass('text-danger').addClass('text-success').text('登录成功!'); 
$('#hw-layer-login').hwLayer('close'); 
}else{ 
$('#msg').addClass('text-danger').text('用户名或密码错误!'); 
} 
$(".hwLayer-ok").removeAttr('disabled'); 
} 
}); 
}); 
});

PHP

以上的Ajax异步操作当然离不开我们后端PHP,当然后端语言你可以自己选。login.php接收前端post上来的用户名和密码,然后比对验证是否正确。这里我偷懒,定义好了用户名和密码,而实际应用中我们应该使用PHP去读取数据库如MySQL中的用户表,比对用户表中的信息,并且以json数据返回登录结果给前端,请看代码:

$username = stripslashes(trim($_POST['username'])); 
$password = stripslashes(trim($_POST['password'])); 
if($username=='helloweba' && $password=='123'){ 
$res['code'] = 1; 
$res['username'] = $username; 
$res['logintime'] = date('Y-m-d H:i'); 
}else{ 
$res['code'] = 0; 
} 
echo json_encode($res);

以上所述是小编给大家介绍的jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)的相关知识,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js日历功能对象
Jan 12 Javascript
JavaScript 学习笔记之数据类型
Jan 14 Javascript
JS设置网页图片vspace和hspace属性的方法
Apr 01 Javascript
常用jQuery代码分享
Jul 14 Javascript
chrome下判断点击input上标签还是其余标签的实现方法
Sep 18 Javascript
JavaScript输入分钟、秒倒计时技巧总结(附代码)
Aug 17 Javascript
vue mixins组件复用的几种方式(小结)
Sep 06 Javascript
JavaScript中filter的用法实例分析
Feb 27 Javascript
使用webpack编译es6代码的方法步骤
Apr 28 Javascript
JS Thunk 函数的含义和用法实例总结
Apr 08 Javascript
浅谈Vue 函数式组件的使用技巧
Jun 16 Javascript
详解JavaScript中的Object.is()与&quot;===&quot;运算符总结
Jun 17 Javascript
js基于cookie方式记住返回页面用法示例
May 27 #Javascript
js获取客户端操作系统类型的方法【测试可用】
May 27 #Javascript
jQuery自定义图片缩放拖拽插件imageQ实现方法(附demo源码下载)
May 27 #Javascript
JS集成fckeditor及判断内容是否为空的方法
May 27 #Javascript
js实现div模拟模态对话框展现URL内容
May 27 #Javascript
详解jQuery中的deferred对象的使用(一)
May 27 #Javascript
基于JS实现密码框(password)中显示文字提示功能代码
May 27 #Javascript
You might like
使用sockets:从新闻组中获取文章(二)
2006/10/09 PHP
PHP 上传文件的方法(类)
2009/07/30 PHP
解析用PHP实现var_export的详细介绍
2013/06/20 PHP
php中让上传的文件大小在上传前就受限制的两种解决方法
2013/06/24 PHP
php读取目录及子目录下所有文件名的方法
2014/10/20 PHP
php+Ajax无刷新验证用户名操作实例详解
2019/03/04 PHP
用js查找法实现当前栏目的高亮显示的代码
2007/11/24 Javascript
Jquery中显示隐藏的实现代码分析
2011/07/26 Javascript
输入密码检测大写是否锁定js实现代码
2012/12/03 Javascript
jQuery使用数组编写图片无缝向左滚动
2012/12/11 Javascript
使用jquery自定义鼠标样式满足个性需求
2013/11/05 Javascript
js获取select标签的值且兼容IE与firefox
2013/12/30 Javascript
Js+Jq获取URL参数的集中方法示例代码
2014/05/20 Javascript
jquery和js实现对div的隐藏和显示方法
2014/09/26 Javascript
jQuery验证插件validation使用指南
2015/04/21 Javascript
JavaScript函数的调用以及参数传递
2015/10/21 Javascript
JavaScript中rem布局在react中的应用
2015/12/09 Javascript
设置点击文本框或图片弹出日历控件的实现代码
2016/05/12 Javascript
bootstrap中添加额外的图标实例代码
2017/02/15 Javascript
解决微信二次分享不显示摘要和图片的问题
2017/08/18 Javascript
JS实现的找零张数最小问题示例
2017/11/28 Javascript
vue文件运行的方法教学
2019/02/12 Javascript
在Vue中用canvas实现二维码和图片合成海报的方法
2019/06/10 Javascript
vuejs移动端实现div拖拽移动
2019/07/25 Javascript
Ant Design的Table组件去除
2020/10/24 Javascript
[04:14]从西雅图到上海——玩家自制DOTA2主题歌曲应援TI9
2019/07/11 DOTA
初步理解Python进程的信号通讯
2015/04/09 Python
Python实现求两个csv文件交集的方法
2017/09/06 Python
基于python3实现socket文件传输和校验
2018/07/28 Python
Python小工具之消耗系统指定大小内存的方法
2018/12/03 Python
python实现转盘效果 python实现轮盘抽奖游戏
2019/01/22 Python
Raffaello Network西班牙:意大利拉斐尔时尚购物网
2019/03/12 全球购物
移动通信专业自荐信范文
2013/11/12 职场文书
学生党员思想汇报
2013/12/28 职场文书
出纳会计岗位职责
2014/03/12 职场文书
Javascript中的解构赋值语法详解
2021/04/02 Javascript