1. html页面(ajax请求)
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<label>姓名:</label><input type="text"><br>
<label>年龄:</label><input type="text"><br>
<label>住址:</label><input type="text"><br>
<button>注册</button>
<script>
let input=document.querySelectorAll("input");
let button=document.querySelector("button");
let url="http://localhost:9001";
button.onclick=function(){
let name=input[0].value;
// console.log(name);
let age=input[1].value;
let addr=input[2].value;
//1.创建请求对象
let xhr=new XMLHttpRequest();
let Surl=`name=${name}&age=${age}&addr=${addr}`
//2.打开链接
xhr.open("post",url);
//3.接受服务器响应
xhr.onreadystatechange=function(){
if(this.readyState==4&&this.status==200){
console.log(this.responseText);//将接收到的服务器数据显示
}
}
//4..发送请求
console.log(Surl)
xhr.send(Surl)
}
</script>
</body>
</html>
2. js模块
注:需要先在命令行里下载mysql包。
cnmp install mysql
代码:
let http=require("http");
let mysql=require("mysql");
let PORT="9001";//端口
http.createServer(function(req,res){
res.setHeader("Access-Control-Allow-Origin","*");
//POST请求
let data="";
req.on("data",function(chunk){
data+=chunk;
});
req.on("end",function(){
// console.log(data);
let arr=data.split("&");
let name,age,addr;
arr.forEach(function(item){
let con=item.split("=")[0];
if(con=="name"){
name=item.split("=")[1];
}else if(con=="age"){
age=item.split("=")[1];
}else if(con=="addr"){
addr=item.split("=")[1];
}
});
//将数据存入数据库
saveData(name,age,addr,function(result){
res.write(JSON.stringify(result));
res.end();
})
});
}).listen(PORT)
console.log("服务器开启成功。。。。。。。。")
function saveData(name,age,addr,fn){
let conn=mysql.createConnection({
host:"localhost", //主机名
user:"xxx", //数据库账户名
password:"xxx", //数据库密码
database:"mytest1" //要连接的数据库名称
});
//创建链接
conn.connect();
//操作(增删改查) 参数一:sql语句;参数二:回调函数
let sql=`insert into mytest1.stduent(name,age,address) values ('${name}',${age},'${addr}');`;
conn.query(sql,function(err,result){
if(!err){
console.log("数据库访问成功",result);
fn({code:200,msg:"注册成功"})
}else{
console.log("数据库访问失败",err)
}
});
//断开链接
conn.end();
}
3. 可能问题:
3.1 原因解释:
主要原因是mysql服务器要求的认证插件版本与客户端不一致造成的。
3.2 解决办法:
这里改成:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你想设置的MySQL登录密码';
这行代码有两层含义,第一:修改root的密码为’你想设置的MySQL登录密码’,摒弃原来的旧密码。第二:使用mysql_native_password对新密码进行编码。
mysql> flush privileges;//刷新