node+ajax实战案例(4)
4.用户登录实现
4.1.用户登录实现思路
1 用户输入登录信息,点击登录的时候把用户登录的这些信息收集起来,然后组装数据通过ajax方式发送到后台
2 后台接到用户输入的登录信息,把这些信息拿去和数据库中的数据做比对,如果成功返回成功信息,如果失败返回失败信息
3 后台返回信息给前台页面,在前台页面中做相应的逻辑处理
4.2.收集用户登录信息并且发送到后台
<script>
var oBtn = document.getElementById('btn');
var oPass = document.getElementById('password');
var oUser = document.getElementById('username');
oBtn.onclick = function () {
ajax({
method: 'post',
url: '/login',
data: 'username='+oUser.value+'&password='+oPass.value,
success: function (result) {
console.log(result)
}
})
}
</script>
4.3.接收用户登录信息和后台做比对
if(url_obj.pathname === '/login' && req.method === 'POST'){
var user_info = '';
req.on('data',function (chunk) {
user_info+=chunk;
});
req.on('end', function (err) {
res.setHeader('content-type', 'text/html;charset=utf-8');
var user_obj = queryString.parse(user_info);
if(!err){
var sql = 'SELECT * FROM admin WHERE username="'+user_obj.username+'" AND password="'+user_obj.password+'"';
connection.query(sql, function (error, result) {
if(!error && result.length !== 0) {
res.write('{"status":0, "message": "登录成功"}');
}else{
res.write('{"status":1, "message": "用户名或者密码不正确"}')
}
res.end();
});
}
})
return;
}
4.4.前端收到后台发送的信息,根据信息做具体业务处理
var oBtn = document.getElementById('btn');
var oPass = document.getElementById('password');
var oUser = document.getElementById('username');
oBtn.onclick = function () {
ajax({
method: 'post',
url: '/login',
data: 'username='+oUser.value+'&password='+oPass.value,
success: function (result) {
if (result.status === 0){
window.location.href = '/admin';
}else{
alert(result.message);
}
}
})
}
5.客户列表渲染
5.1.新建数据表
数据表user的规划字段如下:
id int primary key auto_increment,
username varchar(30) not null,
email varchar(30) not null,
phone char(11) not null,
qq char(11) not null
新建完成后手动添加几条数据
5.2.发送请求获取数据
在admin.html文件中发送ajax请求
<script>
//获取表格数据
ajax({
method: 'get',
url: '/list',
success: function (result) {
console.log(result)
}
});
</script>
5.3.后台接收请求,并从数据库中查询出数据,返回给前端页面
// 返回整个表格数据
if(url_obj.pathname === '/list' && req.method === 'GET'){
var sql = 'SELECT * FROM user';
connection.query(sql, function (error, result) {
if(!error && result){
res.setHeader('content-type','text/plain;charset=utf-8');
res.write(JSON.stringify(result));
res.end();
}else {
console.log(error)
}
})
return;
}
5.4.前端接收到后台返回的数据,生成表格
//获取表格数据
ajax({
method: 'get',
url: '/list',
success: function (result) {
for(var i=0; i<result.length;i++){
var oTr = document.createElement('tr');
for(var item in result[i]){
var oTd = document.createElement('td');
oTd.innerHTML = result[i][item];
oTr.appendChild(oTd);
}
var oP = document.createElement('td');
oP.innerHTML = '<button class="btn btn-primary ">修改</button>\n' +
'<button class="btn btn-danger">删除</button>';
oTr.appendChild(oP);
oTable.appendChild(oTr);
}
}
});
螺钉课堂视频课程地址:http://edu.nodeing.com
node+ajax实战案例(4)的更多相关文章
- node+ajax实战案例(2)
2.静态资源渲染 2.1.创建http服务器 var http = require('http'); var url = require('url'); var app = http.createSe ...
- node+ajax实战案例(6)
8.删除客户 8.1.发送id到后台 删除用户信息比较简单,只需要把对应行的id发送到后台就可以了 oTable.onclick = function (ev) { var ev = ev || ev ...
- node+ajax实战案例(5)
6.添加客户 6.1.点击添加按钮,弹出表单框 // 添加用户 显示对话框 var addBtn = document.getElementById('add-btn'); var addUser = ...
- node+ajax实战案例(3)
3.用户注册实现 3.1.注册用户功能的实现逻辑 1 用户在表单上输入注册信息 2 点击注册后,收集用户在表单上输入的注册信息并且发送给后台 3 后台接收用户发送过来的注册信息 4 后台需要处理数据并 ...
- node+ajax实战案例(1)
1.mysql入门 1.1.数据库相关概念 1.1.1.什么是数据? 描述事物的符号记录称为数据,描述事物的符号可以是数字.文字.声音.图片.视频等,有多种表现形式,都可以经过数字化后存入计算机 1. ...
- 《Node.js实战(双色)》作者之一——吴中骅访谈录
- 如何从40亿整数中找到不存在的一个 webservice Asp.Net Core 轻松学-10分钟使用EFCore连接MSSQL数据库 WPF实战案例-打印 RabbitMQ与.net core(五) topic类型 与 headers类型 的Exchange
如何从40亿整数中找到不存在的一个 前言 给定一个最多包含40亿个随机排列的32位的顺序整数的顺序文件,找出一个不在文件中的32位整数.(在文件中至少确实一个这样的数-为什么?).在具有足够内存的情况 ...
- Flume实战案例运维篇
Flume实战案例运维篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Flume概述 1>.什么是Flume Flume是一个分布式.可靠.高可用的海量日志聚合系统,支 ...
- 使用Zabbix监控Nginx服务实战案例
使用Zabbix监控Nginx服务实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.编译安装nginx步骤详解并开启状态页 博主推荐阅读: https://www.cn ...
随机推荐
- Chisel3 - Tutorial - ShiftRegister
https://mp.weixin.qq.com/s/LKiXUgSnt3DzgFLa9zLCmQ 简单的寄存器在时钟的驱动下,逐个往下传值. 参考链接: https://github.com ...
- 【Hadoop】namenode与secondarynamenode的checkpoint合并元数据
Checkpoint Node(检查点节点) NameNode persists its namespace using two files: fsimage, which is the latest ...
- Entity FrameWork操作数据库完成登陆、列表显示+验证码
登陆页面 登陆页面的页面结构比较简单,没有写样式. image标签的作用是用来显示验证码. 一般处理程序代码展示 using System; using System.Collections.Gene ...
- Java实现 LeetCode 209 长度最小的子数组
209. 长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组.如果不存在符合条件的连续子数组,返回 0. 示例: 输入: s = ...
- Java中StringBuffer类的常用方法
StringBuffer:StringBuffer类型 描述:在实际应用中,经常回遇到对字符串进行动态修改.这时候,String类的功能受到限制,而StringBuffer类可以完成字符串的动态添加. ...
- java实现洛谷P3376【模板】网络最大流
题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入格式 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行包含三个正整数u ...
- portapack h1 买回来刷hackrf与使用说明
买回来很兴奋,别着急,先不用装扩展板!刷好支持扩展屏的固件,才能用!-------------------------------------hackrf连接电脑windows系统win7/win10 ...
- Mac 制作 Linux 启动盘
本文原始地址:https://sitoi.cn/posts/28583.html 前期准备 一个 Mac 电脑 一个 U 盘(8GB 以上) 下载好 Linux 系统镜像(iso 文件) 具体步骤 挂 ...
- 三分钟搭建websocket实时在线聊天,项目经理也不敢这么写
我们先看一下下面这张图: 可以看到这是一个简易的聊天室,两个窗口的消息是实时发送与接收的,这个主要就是用我们今天要讲的websocket实现的. websocket是什么? websocket是一种网 ...
- react使用Echarts绘制高亮可点击选中的省市地图
最近做项目遇到一个需求,需要显示广东省各个地级市的地图,并且鼠标移入高亮显示,鼠标点击可以选中某个地级市.在网上查阅了大量资料之后,最后选择了使用echarts实现该需求.在此记录一下,希望可以帮到有 ...