jQuery+Ajax+PHP实现异步弹出层登录功能详解

作者:闭包旅人

时间:2026-10-30

浏览:569

本文详细介绍如何使用jQuery结合Ajax与PHP实现异步弹出层登录功能。通过Bootstrap构建UI,利用hwLayer插件展示登录表单,前端校验后通过Ajax提交数据至后端login.php进行验证,最终实现局部刷新与弹出层关闭的完整交互流程。

文章目录

异步弹出层登录功能概述

弹出层不仅用于展示页面信息,更常用于增强交互体验,例如展示表单。典型的场景是弹出登录表单,用户提交信息后,后台验证通过则关闭弹出层并在主页面局部刷新用户数据。本文将演示如何结合jQuery、Ajax和PHP实现这一异步登录效果。

异步弹出层登录功能概述

效果展示 源码下载

HTML结构与资源引入

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前端交互逻辑

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后端验证处理

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实现弹出层异步登录的相关知识,希望有所帮助。如有疑问请留言,小编会及时回复。感谢大家对本站的支持!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章