www目录下的内容:
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);
}
}
};
}
/*user.html*/
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="ajax.js"></script>
<script>
window.onload=function(){
var oTxtUser=document.getElementById("user");
var oTxtPass=document.getElementById("pass");
var oBtnReg=document.getElementById("reg_btn");
var oBtnLogin=document.getElementById("login_btn");
oBtnLogin.onclick=function(){
ajax({
url:'/user',
data:{
act:'login',user:oTxtUser.value,pass:oTxtPass.value},
type:'get',
success:function(str){
var json=eval('('+str+')');
if(json.ok){
alert('登录成功');
}else{
alert('登录失败'+json.msg);
}
},
error:function(){
alert('通信失败');
}
})
};
oBtnReg.onclick=function(){
ajax({
url:'/user',
data:{
act:'reg',user:oTxtUser.value,pass:oTxtPass.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="password" id="pass"/><br/>
<input type="button" value="注册" id="reg_btn"/>
<input type="button" value="登录" id="login_btn"/>
</body>
</html>
server.js
const http=require('http');
const fs=require('fs');
const querystring=require('querystring');
const urlLib=require('url');
var server=http.createServer(function(req,res){
var str='';
var users={
};
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':
if(users[GET.user]){
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":"未知的act"}');
}
res.end();
}else{
var file_name='./www'+url;
fs.readFile(file_name,function(err,data){
if(err){
res.write('404');
}else{
res.write(data);
}
res.end();
})
}
})
});
server.listen(8080);