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 ...
随机推荐
- Rocket - util - Counters
https://mp.weixin.qq.com/s/q7R2Dn9p9cch_ABN4raReQ 介绍几种计数器的实现,以及其中的一点小细节. 1. ZCounter ...
- 初学者对Git的使用安装教程,以及对unknown key type -rsa的解决办法
第一次使用Git,诚惶诚恐. Git在每个电脑上第一次使用必须要配置环境,才能通过SSH秘钥的方式安全稳定的拉取代码! 此文适合对Git一无所知的小白观看,大神勿扰.下面我将讲解一个傻瓜式的Git安装 ...
- Java实现 LeetCode 744 寻找比目标字母大的最小字母(二分法)
744. 寻找比目标字母大的最小字母 给定一个只包含小写字母的有序数组letters 和一个目标字母 target,寻找有序数组里面比目标字母大的最小字母. 在比较时,数组里字母的是循环有序的.举个例 ...
- Java实现 蓝桥杯VIP 算法训练 学做菜
算法训练 学做菜 时间限制:1.0s 内存限制:256.0MB 问题描述 涛涛立志要做新好青年,他最近在学做菜.由于技术还很生疏,他只会用鸡蛋,西红柿,鸡丁,辣酱这四种原料来做菜,我们给这四种原料标上 ...
- Java实现 LeetCode 371 两整数之和
371. 两整数之和 不使用运算符 + 和 - ,计算两整数 a .b 之和. 示例 1: 输入: a = 1, b = 2 输出: 3 示例 2: 输入: ...
- Java实现 LeetCode 71 简化路径
71. 简化路径 以 Unix 风格给出一个文件的绝对路径,你需要简化它.或者换句话说,将其转换为规范路径. 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身:此外,两个点 (-) 表示将 ...
- java实现第二届蓝桥杯连通问题(C++)
连通问题. BMP是常见的图像存储格式. 如果用来存黑白图像(颜色深度=1),则其信息比较容易读取. 与之相关的数据: (以下偏移均是从文件头开始) 偏移:10字节, 长度4字节: 图像数据真正开始的 ...
- C#基础篇——委托
前言 在本章中,主要是借机这个C#基础篇的系列整理过去的学习笔记.归纳总结并更加理解透彻. 在.Net开发中,我们经常会遇到并使用过委托,如果能灵活的掌握并加以使用会使你在编程中游刃有余,然后对于很多 ...
- Python数据分析软件包介绍
Python数据分析主要软件包: 1.python -m pip install numpy 2.python -m pip install pandas 3.python -m pip instal ...
- 宇宙第一IDE是谁?
更多精彩文章,尽在码农翻身 微服务把我坑了 如何降低程序员的工资? 程序员,你得选准跑路的时间! 两年,我学会了所有的编程语言! 一直CRUD,一直996,我烦透了,我要转型 字节码万岁! 上帝托梦给 ...