【京东个人中心】——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 ...
随机推荐
- 学习Python Day1
学习PythonDay1,主要是学习了循环,while循环,for循环:while循环加if.else以及elif,for循环嵌套for循环:break,终止循环,continue跳出循环:for i ...
- 所谓编码--泛谈ASCII、Unicode、UTF8、UTF16、UCS-2等编码格式
最近在看nodejs的源码,看到stream的实现里面满地都是encoding,不由想起以前看过的一篇文章--在前面的随笔里面有提到过--阮一峰老师的<字符编码笔记:ASCII,Unicode和 ...
- java伪代码《大道至简》
阅读<大道至简>第一章,深感作者对编程问题的精炼定义,通过对古老寓言故事<愚公移山>的引用,说明了编程的本质,即顺序,分支,循环.其中又将他们扮演的项目组织者,团队经理,编程人 ...
- CCNA基础知识摘录
cisco设备的启动要点: 1.检测硬件(保存在rom) 2.载入软件(IOS)(保存在Flash) 3.调入配置文件(密码,IP地址,路由协议都保存在此)(此文件保存在NVRAM) 0x2102:正 ...
- 转: 【Java并发编程】之二十一:并发新特性—阻塞队列和阻塞栈(含代码)
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17511147 阻塞队列 阻塞队列是Java5并发新特性中的内容,阻塞队列的接口是Java. ...
- 软件工程(GZSD2015)学生博客列表
2015年贵州师范大学软件工程课程学生博客列表 陈小丽 郑倩 唐洁 周娟 李利思 肖俊 罗文豪 周静 徐明艳 毛涛 邓洪虹 岳庆 李盼 安坤 何亚 涂江凤 张义平 杨明颢 杨家堂 胡贵玲 寿克霞 吴明 ...
- 【Alpha】Daily Scrum Meeting——Day7
站立式会议照片 1.本次会议为第7次Meeting会议: 2.本次会议在上午大课间09:40,在禹州楼召开,本次会议为30分钟讨论昨天的任务完成情况以及接下来的任务安排. 燃尽图 每个人的工作分配 成 ...
- 201521123111《Java程序设计》第4周学习总结
1. 本章学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. Answer: - 上课还讲了tostring的使用,般toString用于返回表示对象值的 ...
- Java-错误处理机制学习(一)异常处理
注意:本文介绍Java中的异常处理理论知识及相关语法结构,对于实际应用来说是万万不够的.关于如何高效地使用异常,请查看Java-高效地使用Exception-实践. 异常处理的思想是,当应用程序处于异 ...
- java课程设计--WeTalk(201521123072秦贞一)
在线群聊系统 1,团队课程设计博客链接 http://www.cnblogs.com/slickghost/p/7018105.html 个人负责模块或任务说明 负责模块:界面设计与实现 2,自己的代 ...