node实例,简单用户登录和注册
//nodejs代码
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){ // 解析数据 if (req.url == "/favicon.ico") { return; } var str=''; 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); // 区分接口、文件 if (url == '/user') { switch(GET.act){ //注册 case 'reg': //1、检查注册的用户名是否存在 if (users[GET.user]) { res.write('{"ok": false, "msg": "此用户已存在"}'); //2、插入user }else{ users[GET.user] = GET.pass; res.write('{"ok": true, "msg": "注册成功"}') } break; //登录 case 'login': //1、检查登录用户名是否存在 if (users[GET.user] == null) { res.write('{"ok": false, "msg": "此用户不存在"}'); //2、检查密码是否正确 }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" : "未知的act"}'); } res.end(); console.log(users); console.log(GET); console.log(GET.user); console.log(GET.pass); }else{ // 读取文件 var file_name = './www'+req.url; fs.readFile(file_name, function(err, data){ if (err) { res.write(404); }else{ res.write(data); } res.end(); }) } }); }); server.listen(8082);
//HTML + JS代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <script type="text/javascript" src="ajax.js"></script> <script type="text/javascript"> window.onload = function(){ var oTextUser = document.getElementById("user"); var oTextPass = document.getElementById("pass"); var loginBtn = document.getElementById("login_btn"); var regBtn = document.getElementById("reg_btn"); loginBtn.onclick = function(){ ajax({ url: '/user', data: {act: 'login', user: oTextUser.value, pass: oTextPass.value}, type: 'get', success:function(str){ var json = eval('('+str+')'); if (json.ok) { alert("登录成功"); }else{ alert("登录失败"+ json.msg); } }, error:function(){ alert("通信错误"); } }) }; regBtn.onclick = function(){ ajax({ url:'/user', data: {act: 'reg', user: oTextUser.value, pass: oTextPass.value}, type: 'get', success: function(str){ var json = eval('('+str+')'); if (json.ok) { alert("注册成功"); }else{ alert("注册失败"+json.msg); } }, error:function(){ alert("通信错误"); } }) } } </script> </head> <body> 用户:<input type="text" id="user" /><br /> 密码:<input type="text" id="pass" /><br /> <input type="button" value="登录" id="login_btn" /> <input type="button" value="注册" id="reg_btn" /> </body> </html>
/** Ajax 代码 * Author:strive * Date: 2016/1/13 */ function json2url(json){ var arr=[]; for(var name in json){ arr.push(name+'='+json[name]); } return arr.join('&'); } function ajax(json){ json=json || {}; if(!json.url)return; json.data=json.data || {}; json.type=json.type || 'get'; var timer=null; if(window.XMLHttpRequest){ var oAjax=new XMLHttpRequest(); }else{ var oAjax=new ActiveXObject('Microsoft.XMLHTTP'); } switch(json.type){ case 'get': oAjax.open('GET',json.url+'?'+json2url(json.data),true); oAjax.send(); break; case 'post': oAjax.open('POST',json.url,true); oAjax.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); oAjax.send(json2url(json.data)); break; } oAjax.onreadystatechange=function(){ if(oAjax.readyState==4){ clearTimeout(timer); if(oAjax.status>=200 && oAjax.status<300 || oAjax.status==304){ json.success && json.success(oAjax.responseText); }else{ json.error && json.error(oAjax.status); } } }; }