nodejs ajax 注册,nodejs实现注册登录

用户注册登录的简单实现

首先我们要先定义接口。我们定义一个叫做user的接口,并且这个接口接受三个参数,分别为act,user和password。

/user?act=reg&user=abc&pass=123

/user?act=login&user=abc&pass=123

并且当服务器接收到客户端的请求后,会返回一个json

{"ok":true,"msg":reason}

{"ok":false,"msg":reason}

接口的名字可以随便定义,只要前台和后台统一即可。因此这里的act,也可以换成type或者任意的文字。

具体如下:

const http = require("http");

const fs = require("fs");

const querystring = require("querystring");

const urlLib = require("url");

//存取用户的数据,一般来说要存入数据库

var users = {};

var server = http.createServer(function(req , res){

//解析数据

var str = "";

//POST数据不在req.url中

//POST数据就是内容,直接过来

//因此我们绑定两个事件来分段接收POST数据

req.on('data' , function(data){

str += data;

});

req.on('end' , function(){

var obj = urlLib.parse(req.url , true);

const url = obj.pathname;

const GET = obj.query;

const POST = querystring.parse(str);

console.log(url,GET,POST);

//如果请求的是user就认定为请求接口

//如果不是user都认为是请求文件

if(url == '/user'){ //接口

//客户端是get请求方式

//如果是POST请求,改成POST.act就可以

switch(GET.act){

//用户的动作是登陆

case 'reg':

//检查用户名是否存在

if(users[GET.user]){

//这边json的格式需要注意

//不论是键还是值都得用双引号引起来

//如果不这样做,前台将会无法解析json格式的字符串

res.write('{"ok":false,"msg":"该用户已存在"}');

}else{//没有注册过,严格来说需要验证所输入的用户名密码的合法性

users[GET.user] = GET.pass;

res.write('{"ok":true,"msg":"注册成功"}');

}

break;

case 'login':

//检查用户是否存在

if(users[GET.user] == null){

res.write('{"ok":false,"msg":"该用户不存在"}');

}else if(users[GET.user] !== GET.pass){

//检查密码是否正确

res.write('{"ok":false,"msg":"账户或密码错误"}');

}else{

res.write('{"ok":true,"msg":"登陆成功"}');

}

break;

default:

res.write('{"ok":false,"msg":"未知的错误"}');

}

res.end();

}else{ //请求文件

//读取文件

//客户端要请求的文件都存在www这个文件夹里

var file_name = './www' + url;

fs.readFile(file_name , function(err , data){

if(err){

res.write('404 is not found!');

}else{

res.write(data);

}

res.end();

});

}

});

});

server.listen(3000 , function(err){

if(!err){

console.log('server is listening 3000 port...');

}else{

console.log(err);

}

});

然后我们需要一个html文件

Document

username

password

$(function(){

$("#login_btn").click(function(){

if($("#user").val().length == 0){

return alert("Please input content");

}

if($("#pass").val().length == 0){

return alert("Please input password");

}

$.ajax({

url:"/user",

type:"GET",

data:{

act:"login",

user:$("#user").val(),

pass:$("#pass").val()

},

success:function(str){

var json = eval("("+str+")");

if(json.ok){

alert("登陆成功");

}else{

alert(json.msg);

}

},

error:function(err){

console.log(err);

}

});

});

$("#reg_btn").click(function(){

if($("#user").val().length == 0){

return alert("Please input content");

}

if($("#pass").val().length == 0){

return alert("Please input password");

}

$.ajax({

url:"/user",

type:"GET",

data:{

act:"reg",

user:$("#user").val(),

pass:$("#pass").val()

},

success:function(str){

var json = eval("("+str+")");

if(json.ok){

alert("注册成功");

}else{

alert(json.msg);

}

},

error:function(err){

console.log(err);

}

});

});

});

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值