【京东个人中心】——Nodejs/Ajax/HTML5/Mysql爬坑之注册与登录监听
一、引言
在数据库和静态页面都创建好之后,下面就该接着完成后台Node.js监听注册和登录的部分了。这个部分主要使用的技术是:Node.js的Express框架和ajax异步请求。登录和注册的代码实现过程基本相同,现在重点以注册监听为例进行叙述。
二、js文件-功能实现
- 在注册按钮<input......>中添加id:bg-register,提供监听接口,然后在js/register.js文件中监听“注册”按钮的单击事件,并使用ajax将客户端数据异步提交给服务器
<div class="form-group">
<div class="col-sm-5 col-sm-offset-2">
<input id="bt-register" class="btn btn-success btn-block" type="button" value="注册">
</div>
</div> <script src="js/register.js"></script>
//监听“注册”按钮的单击事件
$('#bt-register').click(function(){
var n = $('#uname').val();//用户名
var p = $('#upwd').val();//密码
//将客户端数据异步提交给服务器
$.ajax({
type:'POST',
url:'/user/register',
data:{uname:n,upwd:p},
success:function(result){
if(result.code===1){
alert('注册成功!3s后自动跳转到登录页面...')
setTimeout(function(){
location.href='login.html';
},3000);
}else{
alert('注册失败!请稍后重试!')
}
},
error:function(result){}
})
});
- 找到主程序app.js,向客户端提供动态资源的响应
/*整个项目的主模块文件:
* 负责创建web服务器对象,监听指定端口
* 并向客户端提供静态资源+动态资源服务*/ //mysql连接数据库会另建模块对应订单等页面,
//这里主模块只负责创建web服务器
const http = require('http');
const express = require('express');
const user = require('./user'); var app = express();//请求处理函数
http.createServer(app).listen(8080); //向客户端提供静态资源的响应
app.use(express.static('public')); //向客户端提供动态资源的响应
app.post('/user/register',user.register);
app.post('/user/login',user.login);
- 在app.js同级目录,创建自定义模块use.js,向外提供login()和register()两个请求处理函数,并且接收客户端POST提交的请求数据:uname、upwd保存入数据库,向客户端返回JSON字符串
/**用户相关功能模块
* 向外提供
* login()和register()
* 两个请求处理函数**/ const qs = require('querystring'); //使用qs模块解析POST数据
const pool = require('./dbpool'); //使用连接池模块获取连接 module.exports = {
//接收POST提交的请求数据:uname、upwd
//保存入数据库,返回JSON字符串,形如:
// {"code":1,"msg":"注册成功","uid":31} register:(req,res)=>{
//读取POST数据:req.on('data',(buf)=>{})
req.on('data',(buf)=>{
//解析出请求数据
var obj = qs.parse(buf.toString());
//获取数据库连接,提交SQL给数据库
pool.getConnection((err,conn)=>{
conn.query('INSERT INTO t_login VALUES (NULL,?,?)',[obj.uname,obj.upwd],(err,result)=>{
var output = {//要输出给客户端的数据
code:1,
msg:'注册成功',
uid:result.insertId
};
res.json(output);//把数据转换为JSON字符串并输出
conn.release();
})
});
})
},
login:(req,res)=>{
req.on('data',(buf)=>{
var obj = qs.parse(buf.toString());
pool.getConnection((err,conn)=>{
conn.query(
'SELECT uid FROM t_login WHERE uname=? AND upwd=?',[obj.uname,obj.upwd],
(err,result)=>{
if(result.length>0){//查询到数据了
var output = {
code:1,
msg:'登录成功',
uid:result[0].id
}
}else{//未查询到数据
var output ={
code:2,
msg:'用户名或密码错误'
}
}
res.json(output);//把数据转化为JSON
conn.release(); })
})
})
}
}
- 因为注册和登录需要很多的数据库访问,所以在app.js同级目录下,还要再创建一个自定义数据库连接池模块dbpool.js,向外提供pool对象。
/**数据库连接池模块
* 向外提供pool对象**/
const mysql = require('mysql'); var pool = mysql.createPool({
host:'127.0.0.1',
user:'root',
password:'',
database:'jd',
port:3306,
connectionLimit:5 //连接池最大容量 一般5~10个
}); module.exports = pool;
三、测试-实现效果
只运行主执行程序app.js即可,然后在127.0.0.1:8080/.......地址端访问测试,效果如下:

数据库 t_login表中添加数据 成功:

app.js 主程序成功运行界面

用刚刚注册的账号 登录

注:转载请注明出处
【京东个人中心】——Nodejs/Ajax/HTML5/Mysql爬坑之注册与登录监听的更多相关文章
- 【京东个人中心】——Nodejs/Ajax/HTML5/Mysql爬坑之功能与数据分析
一.引言 在学习了Nodejs和HTML5之后,发现了Nodejs的使用很方便,和php是完全不同的另一种后台语言.我也明白了,在一个项目里,是不可能同时存在Apach服务器(php)和Web服务器( ...
- 【京东个人中心】——Nodejs/Ajax/HTML5/Mysql爬坑之静态页面
一.引言 接着上一篇,京东个人中心的所有功能数据分析完成之后,现在需要把静态页面完成,实现过程中要用到的技术有:Bootstrap.html5表单新特性等.除此之外,还要利用Node.js的Expre ...
- centos7安装Mysql爬坑记录
centos7安装Mysql爬坑记录 查看是否已安装 使用下列命令查看是否已经安装过mysql/mariadb/PostgreSQL 如果未安装,不返回任何结果(ECS的centos镜像默认未安装 ...
- 日均5亿查询量的京东订单中心,为什么舍MySQL用ES?
阅读本文大概需要 8 分钟. 来源:京东技术订阅号(ID:jingdongjishu) 作者:张sir 京东到家订单中心系统业务中,无论是外部商家的订单生产,或是内部上下游系统的依赖,订单查询的调 ...
- 【唯星宠物】——BootStrap/Mysql/PHP/Ajax爬坑之正则验证登录注册子页
前言:唯星宠物产品官网的登录注册,单独一个子页,页面使用BootStrap实现响应式,PHP提供服务端,利用Ajax技术,从Mysql中获取JSON数据,并对表单信息进行正则验证.项目github地址 ...
- Vue.js——使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用
概述 上一篇我们介绍了如何使用vue resource处理HTTP请求,结合服务端的REST API,就能够很容易地构建一个增删查改应用.这个应用始终遗留了一个问题,Web App在访问REST AP ...
- Vue.js——使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用
转自:https://www.cnblogs.com/keepfool/p/5665953.html 概述 上一篇我们介绍了如何使用vue resource处理HTTP请求,结合服务端的REST AP ...
- 阿里云服务器centos7环境下安装xampp后,mysql有进程,但是却没有监听3306端口
配置阿里云服务器centos7中xampp环境时出现了一种情况: 在centos中可以使用命令进入mysql 修改后也可以远程用phpmyadmin连接mysql 但是用navicat却无法连接 先修 ...
- HTML5 浏览器返回按钮/手机返回按钮事件监听
1.HTML5 History对象 支持使用pushState()方法修改地址栏地址,而不刷新页面. popstate事件 当history实体被改变时,popstate事件将会发生.调用pushS ...
随机推荐
- Linux io Model
socket阻塞与非阻塞,同步与异步 作者:huangguisu 1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调 ...
- PHP常量定义define与const
一.const PHP5.3以前,const只能在类内部声明变量,5.3+允许在外部声明变量,但还不能使用常量计算! const ONE = 1; const WORD = 'hello world' ...
- Selenium常规操作---基于python
from selenium import webdriver 1. 打开浏览器 driver=webdriver.Firefox() #火狐浏览器 driver=webdriver.Ie() #打 ...
- node简单配置一台服务器
要想使用nodeJS来搭建服务器,首先需要一个必备的条件:node必须安装,建议为4.0版本及以上: 在node中,为我们封装了好多类,搭建服务器需要的一个类是"http"类. 用 ...
- Linux — 用户组、权限
Linux 用户组分为:所有者.所在组.其他组 所有者:谁创建,谁是所有者.命令:ls -al 所在组:当创建文件或者文件夹时,这个文件或者文件夹所分配到的用户组,这样就会有效地隔离文件. 其他组:和 ...
- 【集美大学1411_助教博客】团队作业5——测试与发布(Alpha版本)
同学们好像都进入了状态,任务都完成的不错,测试与发布是一个软件的非常重要的环节,每年双11前夕是阿里巴巴加班最严重的时期,这是因为他们在不断的测试,因为他们不想在双11到来之时有任何差池.所以无论你的 ...
- 【Beta】Daily Scrum Meeting——Day2
站立式会议照片 1.本次会议为第一次Meeting会议: 2.本次会议在中午12:00,在图书馆一楼楼道召开,本次会议为30分钟讨论今天要完成的任务以及接下来的任务安排. 燃尽图 每个人的工作分配 成 ...
- 团队作业4——第一次项目冲刺(Alpha版本)7th day
一.Daily Scrum Meeting照片 二.燃尽图 三.项目进展 在计时模式下能够记录用户的用户名和成绩,没有弄登录功能, 将程序定义为单机的 未完成的卡片为登录功能和使用QQ登录. 四.困难 ...
- 201521123075 《Java程序设计》第1周学习总结
1. 本周学习总结 (1)Java不仅是程序语言,还是一种标准规范,代表着解决问题的方案.Java是一个面向对象的编程语言,熟悉后相对于c++更方便,其一大特色就是能够跨平台运行. (2)Java发展 ...
- 关闭Sublime Text的自动更新的方法
每次打开Sublime text 软件都会提示我让我更新软件,如图: 经过仔细的研究发现可以通过以下途径关闭软件的自动更新 打开Submine Text,找到Preferences -> Set ...