为什么要用ajax登录,登录用ajax还是不会写

html>

Document

登录

注册

+86

注 册

登 录

var titles = document.getElementById('title').getElementsByTagName('span'),  //登录和注册按钮

user = document.getElementById('user'),  //用户输入框

userInfo = document.getElementById('user_info'),  //用户名提示文字

userIcon = document.getElementById('user_icon'),  //用户名提示图标

pwd = document.getElementById('pwd'),  //密码框

pwdIcon = document.getElementById('pwd_icon'),  //密码栏的图标

pwdInfo = document.getElementById('pwd_info'),  //密码栏的提示文字

sigup = document.getElementById('sigup-btn'),  //注册按钮

login = document.getElementById('login-btn'),  //登录按钮

userReg = /^1[3-8][0-9]{9}$/,  //手机号正则

pwdReg = /^\w{5,12}$/,   //密码正则

isrepeat = false;  //检测用户名是否被占用

//检测用户

function checkUser(){

//电话框输入的值

var userVal = user.value;

//验证手机号码是否有效

if(!userReg.test(userVal)){

userInfo.innerHTML = '手机号码无效';

userIcon.className = 'no';

}else{

userInfo.innerHTML = '';

userIcon.className = '';

$.ajax({

url:'http://localhost/register/server/isUserRepeat.php',

method:'post',

async:true,

data:{username:userVal},

success:function(data){

if(data.code == 1){

userIcon.className = 'ok';

isrepeat = false;

}else if(data.code ==0){

userIcon.className = 'no';

userInfo.innerHTML = data.msg;

isrepeat = true;

}else{

userIcon.className = 'no';

userInfo.innerHTML = '检测失败,请重试!';

}

}

})

}

}

//检测密码

function checkPwd(){

var pwdVal = pwd.value;

if(!pwdReg.test(pwdVal)){

pwdInfo.innerHTML = '请输入5-12位的字母、数字及下划线';

pwdIcon.className = 'no';

}else{

pwdInfo.innerHTML = '';

pwdIcon.className = 'ok';

}

}

//注册

function register(){

//获取到用户名和密码的值

var userVal = user.value,

pwdVal = pwd.value;

if(userReg.test(userVal) && pwdReg.test(pwdVal) && !isrepeat){

$.ajax({

url:'http://localhost/register/server/register.php',

method:'post',

async:true,

data:{username:userVal,userpwd:pwdVal},

success:function(data){

alert('注册成功,请登录!');

//跳转到登录页面

titles[0].className = 'current';

titles[1].className = '';

login.className = 'show';

sigup.className = '';

//清空输入框

user.value = '';

pwd.value = '';

},

error:function(){

pwdInfo.innerHTML = '注册失败,请重新输入';

}

})

}

}

//登录

function logins(){

//获取到用户名和密码的值

var userVal = user.value,

pwdVal = pwd.value;

$.ajax({

url:'http://localhost/register/server/register.php',

method:'post',

async:true,

data:{username:userVal,userpwd:pwdVal},

success:function(data){

check(data,userVal,pwdVal);

},

error:function(){

pwdInfo.innerHTML = '登录失败,请重新输入';

}

})

}

function check(data,userVal,pwdVal){

for(var i in data){

if(data[i].username==userVal && data[i].userpwd==pwdVal){

user.value='';

pwd.value='';

return alert('登录成功!');

}else if(data[i].userpwd==pwdVl){

return alert('用户名错误')

}else if(data[i].username==userVl){

return alert('密码错误')

}

return alert('账号密码错误请重试')

}

}

//绑定事件,检测用户手机号是否合法

user.addEventListener('blur',checkUser,false);

//绑定事件,检测密码的有效性及是否注册

pwd.addEventListener('blur',checkPwd,false);

//绑定事件,注册

sigup.addEventListener('click',register,false);

//切换成登录

titles[0].addEventListener('click',function(){

titles[0].className = 'current';

titles[1].className = '';

login.className = 'show';

sigup.className = '';

},false);

//切换成注册

titles[1].addEventListener('click',function(){

titles[1].className = 'current';

titles[0].className = '';

login.className = '';

sigup.className = 'show';

},false);

*{

margin: 0;

padding: 0;

}

body{

background-color: #333;

}

.register{

width: 300px;

height: 270px;

margin: 80px auto;

padding: 15px 30px;

background-color: #eee;

border-radius: 5px;

}

.title{

height: 35px;

}

.title span{

font-size: 16px;

font-weight: bold;

color: #666;

margin-right: 30px;

cursor: pointer;

}

.title span.current{

color: #f00;

}

.form div{

width: 290px;

height: 30px;

border-radius: 8px;

background-color: #fff;

margin-bottom: 25px;

padding: 8px 10px;

position: relative;

}

.form div span{

display: inline-block;

padding-top: 4px;

padding-right: 3px;

color: #666;

}

.form div input{

border: none;

outline: none;

padding-top: 6px;

font-size: 16px;

color: #666;

background: none;

}

.form div i{

top: 14px;

right: 12px;

width: 16px;

height: 16px;

position: absolute;

}

.form div i.ok{

background: url(../img/icon.png) no-repeat 0 -67px;

/* display: none; */

}

.form div i.no{

background: url(../img/icon.png) no-repeat -17px -67px;

}

.form .info{

margin-top: 14px;

color: #f00;

padding-left: 2px;

}

.button{

padding-top: 7px;

}

.button a{

text-decoration: none;

color: #fff;

display: none;

width: 100%;

height: 45px;

background: #f20d0d;

border-radius: 30px;

text-align: center;

line-height: 45px;

font-size: 16px;

}

.button a.show{

display: block;

}var $ = {

ajax:function(options){

var xhr = null,  //XMLHttpRequest对象

url = options.url,  //url地址

method = options.method || 'get',  //传输方式,默认为get

async = typeof(options.async) === 'undefined'?true:options.async,  //同步异步ss

data = options.data || null,         //参数

params = '',

callback = options.success,    //ajax请求成功的回调函数

error = options.error;

//将data的对象字面量的形式转换为字符串的形式

if(data){

for(var i in data){

params += i+'='+data[i]+'&';

}

params = params.replace(/&$/,'');

console.log(params);

}

//根据method的值改变url

if(method === 'get'){

url +='?'+params;

}

//判断浏览器是否将XMLHttpRequest作为本地对象实现,针对IE7,firefox、opera等

if(typeof XMLHttpRequest != 'undefined'){

xhr = new XMLHttpRequest();

}else if(typeof ActiveXObject != 'undefined'){

//将所有可能出现的ActiveXObject版本放在一个数组中

var xhrArr = ['Microsoft.XMLHTTP','MSXML2.XMLHTTP.6.0','MSXML2.XMLHTTP.5.0','MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP'];

//遍历创建XMLHttpRequest对象

var len = xhrArr.length;

for(var i=0;i

try{

//创建XMLHttpRequest对象

xhr = new ActiveXObject(xhrArr[i]);

//如果创建XMLHttpRequest对象成功,则跳出循环

break;

}

catch(ex){}

}

}else{

throw new Error('No XHR object availabel.');

}

//相应xhr对象状态变化的函数

xhr.onreadystatechange = function(){

if(xhr.readyState === 4){

if((xhr.status >= 200 && xhr.status<300)|| xhr.status === 304){

callback && callback(JSON.parse(xhr.responseText))

}else{

error && error();

}

}

}

//创建Http请求

xhr.open(method,url,async);

//添加Http头部

xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');

//发送请求

xhr.send(params);

}

}

怎么办啊,跟着老师的代码敲完还是一知半解的,能看懂但是想不到

shiro ajax登录过期处理 shiro ajax登录过期处理1、创建拦截器2、Shiro配置类里增加如下代码3、ajax方法 1、创建拦截器 【跳转的路径】不能是login,否则会导致重定向次数过多 import com.alibaba.fastjson.JSONObject; import org.apache.shiro.web.filter.authc.FormAuthenticationFilter; import... 阅读详情

相关推荐

jQuery+Ajax+PHP实现异步登录

jQuery+Ajax+PHP实现异步登录 此文首发于个人博客 戎码一生 同步和异步的区别 同步的思想是所有的操作都做完,才返回给用户。这样用户在线等待的时间太长,给用户一种卡死了的感觉(就是系统迁移中,点击了迁移,界面就不动了,但是程序还在执行,卡死了的感觉)。这种情况下,用户不能关闭界面,如果关闭了,即迁移程序就中断了。 异步是将用户请求放入消息队列,并反馈给用户,系统迁移程序已经启...

qq_38019452的博客 3442

第107天:Ajax 实现简单的登录效果

使用 Ajax 实现简单的登录效果 Ajax是一项使局部网页请求服务器信息,而不需整体刷新网页内容的异步更新技术。这使得向服务器请求的数据量大大减少,而且不会因局部的请求失败而影响到整体网页的加载。 一、 Ajax 请求数据的基本操作 假设使用 Ajax 从某个已知文档“test.txt”获取文件。 1、基本操作 1 // 1. 得到做 ajax ...

weixin_34405354的博客 776

AJAX异步处理请求 异步登录

AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。 这里有更加详细的简述以及Ajax原生的五个基本步骤及jq中的ajax 相对来说根更加全面一点 我们这儿能使用ajax实现异步刷新登录 引入js文件这儿就不用说,直接开始吧小伙伴们 js代码中的Login.ashx就是一般处理程序啦 $("#btnLogin").click(function () { ...

weixin_45678946的博客 1226

用ajax提交表单好吗,一般登陆的时候提交用form表单提交好?还是用ajax好?

想问下在登陆页面的时候使用form表单提交好还是用ajax提交好?如果是用安全性来区分的话,应该首选哪个?还有就是form表单和ajax的用途?什么时候该用form什么时候该用ajax?安全性都一样。安全性与你的提交文件的业务处理(格式检测,防注入)有关,与提交方式无关。通常表单提交,ajax通常用在浏览查看,操作小部件等提高用户体验本人比较习惯用Ajax,Ajax提交是通过js来提交请求,请求与...

weixin_34512248的博客 756

Fluent动网格实战:5种区域运动类型详解与配置避坑指南

本文详细解析了Fluent动网格技术中的五种区域运动类型,包括固定、刚体、变形、用户自定义和系统耦合,并提供了配置技巧与避坑指南。通过实际案例和参数优化建议,帮助工程师有效解决网格变形、计算稳定性等常见问题,提升CFD仿真效率。

weixin_28339967的博客 415

Chapter 19 Digital Phase-Locked Loops

数字锁相环 Digital Phase-Locked Loops, 就是根据原来时钟信号, 产生新的时钟信号, which is locked or synchronized. (align 参考时钟边沿 or 在中间)

2304_76736886的博客 973

Ajax实现用户登录

1.Ajax:定义 Ajax即Asynchronous(异步的) Javascript And XML,使用Ajax技术网页应用能够快速地将增量更新呈现在用户界面上 使用Ajax,使得前端和数据库实现交互,例如,在登录验证中,使得输入框旁边可以提示用户名是否存在 2.为什么使用Ajax 局部刷新,不重新加载网页的的情况下,对网页某个网页进行更新,提高性能。 3.语法: $.ajax使用方法 $.ajax({});中间添加内容,添加常用属性如下: 常用参数: 1、url 请求地址(相当于fo

m0_56557880的博客 6686

华硕主板UEFI模式下安装Ubuntu与Windows双系统全攻略

本文详细讲解了在华硕主板UEFI模式下安装Ubuntu与Windows双系统的完整流程。从安装前的BIOS关键设置(如处理安全启动与CSM)、使用GPT分区表,到在Windows中安全分配空间、手动创建Ubuntu分区,最后完成引导配置,提供了避免常见错误的实用技巧,确保双系统稳定共存。

weixin_29199873的博客 346

Ajax 验证登录

用户登录,若验证不通过,这时我们刷新页面就会导致用户之前的输入全部丢失,对我来说这是一种非常差的体验,所以我采用 ajax 的方法来验证表单。 项目准备 我的项目基于 ASP.NET MVC ,运用了 Bootstrap 前端 UI 框架,JavaScript 采用了 JQuery 以及 JQuery unobtrusive-ajax 库。 界面如图,只有:用户名、密码 两个输入。 具体实现 在...

码农在途的博客 4797

Ubuntu22.04 上ROS1 Noetic的安装与常见问题解决

本文详细介绍了在Ubuntu 22.04系统上安装ROS1 Noetic的两种主要方法:推荐使用社区维护的适配仓库进行便捷安装,并提供了从源码编译的备选方案。文章重点解决了安装后编译ROS包时极易遇到的“shared_mutex”等C++标准库冲突问题,并给出了其他常见错误的排查与解决指南,帮助开发者顺利搭建稳定的ROS开发环境。

weixin_29295541的博客 363

Mac用户解决WPS中的俄语显示红线问题(WPS添加外语拼写检查)

我所使用的WPS版本:AppleStore 下载的 MacOs版 3.3.0 首先,对于 在访达-应用程序中,找到WPS,右键-点击“显示包内容” 然后按照下图的索引目录(Contents\Resource\office6\dicts\spellcheck),最后进入一个叫“spellcheck”的文件夹 最后将下载好的字典包(例如上图中的 en_US就代表美式英语;ru_RU就代表俄语) 关于字典包资源下载,我在网上找到一个Google云盘,里面包含了法语,德语,西语,意大利语,葡萄牙.

qq_48159150的博客 7896

ajax用户登录注册

首先在服务器环境下运行,访问php接口 调用封装好的Ajax方法 前端js操作代码: 后端数据接口 <?php /* 接口说明文档 url: './data/user.php' type: post 参数: user 用户账号 pass 用户密码 type 登录或注册 = login 登录 = add 注册 返回值示例: {"err":0,"msg":"登录成功"} */// 允许任何来源 header(

博客 6089

服务器测试之intel E8102CQDA2

网卡性能 iperf E810

qq_41897488的博客 2507

ajax实现登录

ajax实现登录 1.ajax是一种异步请求数据的web开发技术,对于改善用户的体验和页面性能很有帮助。简单地说,在不需要重新刷新页面的情况下,Ajax 通过异步请求加载后台数据,并在网页上呈现出来。 今天带来的是登录的时候如果密码或账号错误将会在原页面进行提示首先我们来看jsp页面代码 <body> <div id="zuida"> <div...

qq_43494108的博客 8513

关于112G和56G PAM4信号的有效回损(ERL)

本文探讨了回波损耗(RL)对高速数字通信系统性能的影响,重点分析了时域信道运行裕度(COM)与频域回波损耗指标的关联性。研究表明,传统频域回波损耗指标在预测系统性能时存在假阳性/假阴性问题,特别是对PAM-4信号系统影响更为显著。通过引入基于时域脉冲响应的有效回波损耗(ERL)指标,并结合判决反馈均衡器(DFE)的补偿效应,可更准确评估系统性能。实验表明,短封装器件虽然频域回波损耗较差,但在实际系统中表现更优。研究提出通过时域门控加权等方法优化ERL计算,为高速互连设计提供了更可靠的性能评估框架。

小孟同学的博客 292

数字信号处理(一):Xilinx Vivado DDS IP核设计实例(文末附源码)

前言 在数字信号处理时我们经常会用到数字变频,包数字下变频(DDC)和数字上变频(DUC),这其中会用到Xilinx公司的DDS IP核或者Altera公司的NCO IP核来产生本振频率,以现数字域信号频谱搬移。本文我们通过例化Xilinx公司的DDS IP核来产生混频器本振输入频率,并给出Modelsim仿真测试结果。 1、Xilinx DDS IP简介 Xilinx公司的DDS IP核使用AX...

FPGA_Designer 1万+

如何用ajax进行登录,使用 Ajax 实现简单的登录效果的原理

本文只为达到简单效果以及了解基本原理,不可实际使用。Ajax是一项使局部网页请求服务器信息,而不需整体刷新网页内容的异步更新技术。这使得向服务器请求的数据量大大减少,而且不会因局部的请求失败而影响到整体网页的加载。一. Ajax 请求数据的基本操作假设使用 Ajax 从某个已知文档“test.txt”获取文件。1. 基本操作// 1. 得到做 ajax 操作的对象// 系统提供的一个构造函数,可以...

weixin_26757925的博客 2671

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ajax实现简单的登录页面

一.什么是ajax : Ajax是一种无需重新加载整个网页,能够更新部分网页的技术。 二.ajax的工作原理: Ajax工作原理是一个页面的指定位置可以加载另一个页面所有的输出内容,这样就实现了一个静态页面也能获取到数据库中的返回数据信息了。 所以Ajax实现了一个静态网页在不刷新整个页面的情况下与服务器通信,减少了用户等待时间,同时降低了网络流量,增强了客户体验的友好程度。 三.用ajax实现简...

wsy_666的博客 8779

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

ajax实现登录页面跳转,Ajax登录功能实现

一:Ajax是什么?Ajax即Asynchronous Javascript And XML(异步JavaScript和XML)在 2005年被Jesse James Garrett提出的新术语,用来描述一种使用现有技术集合的‘新’方法。例如: HTML 或 XHTML, CSS, JavaScript, DOM, XML, XSLT, 以及最重要的XMLHttpRequest。作用:使用Ajax...

weixin_30840919的博客 3571

Ajax请求,登录超时,如何跳转到登录页面

对于普通的http请求,请求服务器,session超时的情况下,页面会自动跳转到登录页面。 但是对于Ajax请求,页面还是当前页面,不会跳转到登录页面。 看到网上很多方法,但是都不通用,下面是如何解决这个问题的例子。 一、请求页面修改 本例是基于jQuery框架为基础实现的。 创建一个login-timeout.js文件,拷贝如下代码。 $.ajaxSetup({

abc5232033的博客 9325

登录页面ajax请求

登录页面ajax请求

小葱的博客 1万+

ssm框架使用ajax,ajax登录

看了一些别的,加载json包的什么的,一看就大感麻烦,对于新手来说极不友好。于是就自己弄,发现和以前不搭ssm框架是差不多,发出来给与诸君共勉。 1.话不多说看前端js代码: //登录 function login(){ var username = $("#username").val(); var password = $("#password").val(); ...

不见来去的博客 1275

企业开发ajax登录,ajax方式登录

写在前面今天回来的比较早,就趁着有空,把登录的代码更新一下。上篇文章实现了ajax的注册,这篇将实现登录,实现目标,ajax登录方式,如果勾选记住我,则下次不再输入用户名密码,直接跳转到网盘界面。代码@{Layout = null;}登录$(function () {//多选框$("#chkRemember").click(function () {if (!$(this).attr("check...

weixin_34701288的博客 254
上一篇: grunt compress 多个css,grunt + sass:同时输出2个css文件
下一篇: 6.ajax应用,ajax应用
焚海炖鱼
博客等级 码龄8年 29粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值