ajax登录验证的原理,ajax用户登录验证-get和post提交方式,与工作原理—2018-8-15...

ajax用户登录验证:

实例

html>

Ajax实战:表单验证

用户登录

邮箱: 

密码: 

提交

let btn = document.getElementsByTagName('button')[0];

btn.onclick = function () {

//1.创建xhr对象

let xhr = new XMLHttpRequest();

//2.监听响应状态

xhr.onreadystatechange = function(){

// 准备就绪

if (xhr.readyState === 4) {

// 判断响应结果:

if (xhr.status === 200) {

let p = document.createElement('p');  //创建新元素放返回的内容

p.style.color = 'red';

// 将服务器端返回的json字符串转为js对象

let json = JSON.parse(xhr.responseText);

// 如果json.statu == 1 表示查询成功

if (json.statu === 1) {

p.innerHTML = json.msg;

} else if (json.statu == 0) {

p.innerHTML = json.msg;

}

// 将响应文本添加到新元素上

document.forms[0].appendChild(p);

// 把点击过的按钮禁用掉

btn.disabled = true;

// 定时器,把提示的信息2秒后消失

setTimeout(function(){

// 将提示信息删除

document.forms[0].removeChild(p);

// 启动按钮

btn.disabled = false;

if (json.statu == 1) {

// 跳转

location.href = 'admin.php';

}

},2000);

} else {

// 响应失败,并根据响应码判断失败原因

alert('响应失败'+xhr.status);

}

} else {

// http请求仍在继续,这里可以显示一个一直转来转去的图片

}

}

//3.设置请求参数

xhr.open('post','inc/demo.php',true);

//4. 设置头信息,将内容类型设置为表单提交方式

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

let data = {

email:document.getElementsByName('email')[0].value,

password:document.getElementsByName('password')[0].value

};

// 将js对象转为json字符串

let data_json=JSON.stringify(data);

//4.发送请求

xhr.send('data='+data_json);

}

运行实例 »

点击 "运行实例" 按钮查看在线实例

inc/demo.php处理数据文件:

实例

// 将json字符串转为php对象

$user = json_decode($_POST['data']);

$email = $user->email;

$password = $user->password;

// 数据库验证用户

$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');

// 满足条件的记录数

$sql = "SELECT COUNT(*) FROM `lianxi` WHERE `email`='{$email}' AND `password`='{$password}'";

// 预处理对象

$stmt = $pdo->prepare($sql);

// 执行语句

$stmt->execute();

//判断记录数是否存在

if($stmt->fetchColumn(0) == 1){

echo json_encode(['statu'=>1,'msg'=>'登录成功,正在跳转...']);

exit;

}else{

echo json_encode(['statu'=>0,'msg'=>'邮箱或密码错误,请重新输入...']);

exit;

}

运行实例 »

点击 "运行实例" 按钮查看在线实例

ajax提交get和post方式:

get方式:

实例

html>

get方式

邮箱:

密码:

提交

let bth = document.getElementsByName('button')[0];

bth.onclick = function () {

let email = document.getElementsByName('email')[0].value;

let password = document.getElementsByName('password')[0].value;

let xhr = new XMLHttpRequest();

// email和password是input控件的name值

let url = 'inc/demo1.php?email='+email+'&password='+password;

//第一个参数是以什么方式发送    第二个发送的url   第三个是否异步默认true(异步)

xhr.open('get',url,true);

xhr.send(null);

//当状态码为4的时候为请求处理完成,返回结果

xhr.onreadystatechange = function () {

if(xhr.readyState === 4){

console.log(xhr.responseText); //xhr.responseText接收返回的数据

}

}

}

运行实例 »

点击 "运行实例" 按钮查看在线实例

post方式:

实例

html>

post方式

邮箱:

密码:

提交

let bth = document.getElementsByName('button')[0];

bth.onclick = function () {

let email = document.getElementsByName('email')[0].value;

let password = document.getElementsByName('password')[0].value;

let xhr = new XMLHttpRequest();

// email和password是input控件的name值

let url = 'inc/demo1.php?email='+email+'&password='+password;

//第一个参数是以什么方式发送    第二个发送的url   第三个是否异步默认true(异步)

xhr.open('post',url,true);

// post方式要设置请求头信息

xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

xhr.send('email='+email+'&password='+password);

//当状态码为4的时候为请求处理完成,返回结果

xhr.onreadystatechange = function () {

if(xhr.readyState === 4){

console.log(xhr.responseText); //xhr.responseText接收返回的数据

}

}

}

运行实例 »

点击 "运行实例" 按钮查看在线实例

inc/demo1.php处理数据提交文件:

实例

//编码

header("Content-type: text/html; charset=utf-8");

// get获取数据

$a = $_GET['email'];

$b = $_GET['password'];

// post获取数据

$a = $_POST['email'];

$b = $_POST['password'];

echo '邮箱:'.$a.'密码:'.$b;

运行实例 »

点击 "运行实例" 按钮查看在线实例

ajax工作原理:

当用户提交数据后,页面不会发生跳转,保持当前的页面,但是数据已经提交到服务器,当服务器处理用户提交的数据后,然后返回前端也就是用户点击提交数据的界面。前端看起来并没有发生什么,但是数据已经发生了改变。

比如说用户登录时提交了登录的表单,而这些数据急速的请求到服务器中,等服务器接收处理后便返回了前端,很明显的给用户提示,提升用户体验。

ajax有异步和同步,异步是指:当用户做了很多的操作,而不是等到服务器返回数据后在进行操作下一步。同步的话:当用户操作了这一件事,没等到服务器返回的请求不能进行下一步的操作!

如果我的思路不对,请老师点一下!谢谢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/396632.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

将Python脚本打包成可执行文件

Python是一个脚本语言,被解释器解释执行。它的发布方式: .py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库。(Python官方的各种安装包就是这样做的&a…

float foo=42e1为什么错_为什么重写了equals()也要重写hashCode()

小Hub领读:虽然是很基础的一篇文章,但是对于equals、hashcode两个方法,相信很多人都与其中的规则不熟悉,来跟着小Hub花个8分钟回顾一下!作者:不学无数的程序员https://my.oschina.net/u/4030990/blog/31341…

ssh客户端_一款基于TAS框架的SSH客户端蠕虫

TEA是一款基于TAS框架的SSH客户端蠕虫,从本质上说,它是一个仿冒的SSH客户端,它能够修改tty输入/输出来实现任意命令执行,或通过SSH连接来上传自身以实现渗透感染。为了实现该工具的正常功能,远程主机需要满足以下条件&…

Selenium入门11 滚动条控制(通过js)

这一节要有js基础。做web端的UI自动化必须要有html,css,javascript前端基础。 滚动条控制: 1 移动垂直滚动条 document.documentElement.scrollTop 2 移动垂直滚动条 document.documentElement.scrollLeft 3 找到某个元素,移动到可…

Qt之QNetworkInterface

简述 QNetworkInterface类负责提供主机的IP地址和网络接口的列表。 QNetworkInterface表示了当前程序正在运行时与主机绑定的一个网络接口。每个网络接口可能包含0个或多个IP地址,每个IP地址都可选择性地与一个子网掩码和/或一个广播地址相关联。这样的列表可以通过…

第二周计划

上周计划回顾 3.5 ~ 3.11 数据: 评师网爬取,完成:2k条记录 finished后端 数据结构 技术选型 学校API封装未完成:后端负责人出差 工作暂停产品 功能设计:主要功能提交:原型图 几个页面 每个页面大概功能完成…

python编程软件排行榜_PYPL 9月编程语言排行榜发布 Python一枝独秀

开发者可以将 PYPL 作为一个参考,决定学习何种语言或 IDE,或者在新的软件项目中使用何种语言或数据库。9 月份的榜单如下:前五名分别是 Python、Java、JavaScript、C# 与 PHP。相比去年 9 月份的数据,除了 Python 大幅上涨了 4.5%…

分享到系统面板_win7电脑没有nvidia控制面板怎么办【解决方法】

我们在使用电脑的时候,当电脑显卡出现问题导致屏幕画面不清晰时,可以使用win7系统自带nvidia控制面板,它能够对显卡进行设置,提升显卡功能,不过很多电脑用户点击nvidia控制面板时却提示nvidia显示设置不可用&#xff0…

Python之数据加密与解密(hashlib、hmac、random、base64、pycrypto)--转载

本文内容 数据加密概述Python中实现数据加密的模块简介hashlib与hmac模块介绍random与secrets模块介绍base64模块介绍pycrypto模块介绍总结参考文档提示: Python 2.7中的str是字节串,而Python 3.x中的str是字符串。本文中的代码都是通过Python 2.7实现的…

day3-文件操作之基本操作

一、文件的基本操作 文件内容: Somehow, it seems the love I knew was always the most destructive kind 不知为何,我经历的爱情总是最具毁灭性的的那种 Yesterday when I was young 昨日当我年少轻狂1、read() 当read()函数中传入整数(int)参数&#…

QT连接多种数据库f方法及测试

QT提供了对多种数据库的访问支持,对SQL Server也可以通过ODBC来进行访问。要想顺利访问SQL Server。 首先要保证以下几点:1. QT编译时已经编译了QtSql2. 编译了ODBC插件。可以通过 configure -plugin-sql-odbc来保证,也可以单独编译~/src/plu…

服务器如何实现电脑无线桥接,无线路由器WDS桥接成功副路由器下电脑无法上网怎么办【解决方法】...

摘 要无线WDS桥接设置完成后,在副路由器管理面,运行状态 无线状态 中,WDS状态显示成功,但电脑通过副路由无法上网。该问题可能与主、副路由器的设置有关,如下图所示: 解决办法: 排查一&#xff…

spad 探测器_从光到光子—“单光子”探测器

光电探测器光电探测器是指在光辐射作用下将其非传导电荷变为传导电荷的一类器件。在电子学中,二极管是一种具有不对称传输特性的双端电子元件,在一个方向上对电流具有低(理想为零)电阻,在另一个方向上具有高(理想为无限)电阻。最常见的类型如…

天地图专题五:在天地图上绘制电子区域并保存数据

版权声明:本文为博主原创文章,转载请注明出处。 上一文章讲了如何在天地图上显示坐标轨迹。 本文介绍如何在天地图上绘制电子区域(电子范围或电子栅栏),并且,我们要将我们绘制的电子区域的坐标数据保存到数…

Mysql中natural join和inner join的区别

假设有如下两个表TableA,TableB TableA TableB Column1 Column2 Column1 Column3 1 2 1 3TableA的Column1列名和TableB的Column1列名相同。 SELECT * FROM TableA INNER JOIN TableB USING (Column1) SEL…

微信和支付宝的服务器在哪里,手机恢复出厂设置,里面支付宝与微信怎么办?原来数据在这里...

当手机使用一段时间之后,因为硬件落后会出现卡顿、内存不足等情况,这个时候提高手机速度最直接的一个办法就是恢复出厂设置,虽然不能从根源上解决问题,但是还是可以凑合个半年时间的。那么这个时候就出现一个问题,手机…

python线上编辑问题_python django - static文件处理与线上部署测试

static文件相关操作涉及:a. 文件位置与访问路径映射b. setting.py与static相关配置STATIC_URLSTATIC_ROOTSTATICFILES_DIRSc. html中对于static文件引用方式d. python manage.py collectstatic1. 开发环境-目录结构2. setting.py 设置STATIC_URL /static/# STATIC_…

android arcgis 绘制圆_arcgis for android 定位 圆

不多说直接代码 ,群里人共享的方法一: /*** 绘制圆,配合 cleargraphicLayer()清除** param center 圆心* param radius 半径* param alpha 填充的透明度 0-100* param fillColor 填充的颜色*/public void DrawCircle(Point center, double radius, int a…

CreateSolidBrush

[声明] WINGDIAPI HBRUSH WINAPI CreateSolidBrush(COLORREF color); [功能] 初始化一个指定颜色的画刷。画笔可以随后被选为任何设备上下文的当前刷子。 [参数表] color 画刷的颜色[返回值] Long,如函数执行成功,就返回指向新画笔的一个句柄&#xff1b…

mysql insert 不需要日志_MySQL数据库性能优化(1)「转」

1、MySQL概述从本文开始我们将讨论建立在块存储方案之上的关系型数据库的性能优化方案和集群方案。关系型数据库的选型将以创业公司、互联网行业使用最广泛的MySQL数据为目标,但是MySQL的安装过程和基本使用方法等知识并不在我们讨论的范围内。后续几篇文章我们首先…