首先来理解一下html - js -ajax-node.js-数据库之间的关系

97e0c37b0c3c956ad63eefecf3913b9a.png

在我眼里,ajax请求类似于一把钥匙,可以打开node.js,也可以说是把本地的请求发送给服务端的媒介。

node.js说白了就是运行在服务端的js,本地运行时必须打开黑窗口。

好啦~ 我把AJAS请求写在我的公共js上,并且进行封装,这样我在哪里只要是需要就可以通过传参来调用ajas

//AJSO ByGo="GET/POST" UrlGo="url" 调用方法的方法名 ; 调用区域调用AJAXbox;function AJSOgo(ByGo, UrlGo,fn) { var xmlhttp; //判断浏览器,并创建对象 if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest();//IE7+ 创建对象 } else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");//IE5/6 } //发送请求 console.log(ByGo,UrlGo) xmlhttp.open(ByGo, UrlGo, true); xmlhttp.send(); //响应事件 xmlhttp.onreadystatechange = function () { //响应状态(服务器响应已做好被处理的准备时所执行的任务) if (xmlhttp.readyState === 4 && xmlhttp.status === 200) { //获取服务器数据 var AJAXbox = xmlhttp.responseText; // return AJAXbox;不行 fn(AJAXbox); } }} 复制代码

这样,我在需要调用数据库内容时,只需要输入

// 调用的方式(因为我没有判定,get/post,所以建议调用‘get’),路由端口,方法名

AJSOgo('GET', 'http://127.0.0.1:8087/', checkTrue);复制代码

========================================================

数据库node.js

首先需要在黑盒子里面安装mysql 和 express

> cnpm i mysql -S

> cnpm i express -S复制代码

当然,保险起见,一定要在后台看一看

ee62ac00a782d912fcd98114f23d99bf.png

ok

写node.js

获取数据库 getmySQL.js

var mysql = require('mysql'); //导入mysql模块function getcon() { //创建数据库相关信息 mysql提供createConnection的链接方法var connection = mysql.createConnection({host: '127.0.0.1', //数据库地址user: 'root', //数据库用户名password: 'root', //数据库密码database: 'hoppotsql' //数据库名});return connection;//返回结果}//导出module.exports=getcon;复制代码

再写一个getExpress.js

这些都是共用的头部

//导入数据库var getmySQL = require("./getmySQL");//导入express模块var getExpress = require("express");//获取express方法var app = getExpress();//设置跨域访问(设置在所有的请求前面即可)app.all("*", function (req, res, next) { //设置允许跨域的域名,*代表允许任意域名跨域 res.header("Access-Control-Allow-Origin", "*"); //允许的header类型 res.header("Access-Control-Allow-Headers", "content-type"); //跨域允许的请求方式 res.header("Access-Control-Allow-Methods", "DELETE,PUT,POST,GET,OPTIONS"); if (req.method == 'OPTIONS') res.send(200); //让options尝试请求快速结束 else next();});//插入post的body!!var bodyParser = require('body-parser');app.use(bodyParser.urlencoded({ extended: false }));app.use(bodyParser.json());复制代码

开始写端口啦~~

app.get('/端口名', function (req, res) { //获取数据库链接对象!!!!!!!!!!!!!!!一定要写在这里!!!!!! var getmySQLCon = getmySQL(); //启动数据库 getmySQLCon.connect(); var sql = `SELECT * FROM proclass`; getmySQLCon.query(sql, function (err, result) { if (err) { console.log("出错了:" + err.message); res.send({ state: false, des: "出错了:" + err.message }); getmySQLCon.end(); return; } else { if (result.length == 0) { res.send({ state: true, des: "没有信息哦" }) } else { res.send({ state: true, des: result }) } } getmySQLCon.end();//关闭数据库 })})

var server = app.listen(8087, function () { console.log("应用实例,访问地址 http://127.0.0.1:8087");})复制代码

ok~

那么,如果是传参进来呢?

首先是在js部分

AJSOgo('GET', 'http://127.0.0.1:8087/getUserSql?Phone='+123, signupJudge);复制代码

node.js

app.get('/getUserSql', function (req, res) { //获取唯一的电话号码! var Phone = req.query.Phone; //获取数据库链接对象!!!!!!!!!!!!!!!一定要写在这里!!!!!! var getmySQLCon = getmySQL(); //启动数据库 getmySQLCon.connect(); var sql = `SELECT * FROM users WHERE Phone = "${Phone}"`; getmySQLCon.query(sql, function (err, result) { if (err) { console.log("出错了:" + err.message); res.send({ state: false, des: "出错了:" + err.message }); getmySQLCon.end(); return; } else { if (result.length == 0) { res.send({ state: false, des: "没有信息哦" }) } else { res.send({ state: true, des: result }) } } getmySQLCon.end(); })})复制代码

ok!

好啦~

对了,在实际中获取到一个对象该如何是好呢?

这是一段页面的js

var E_mail=myClass("E-mail")[0].value;//myClass是自己封装的 var Phone=myClass("Phone")[0].value; var UserName=myId("UserName").value; var PassWord=myId("PassWord").value; userBox={E_mail:E_mail,Phone:Phone,UserName:UserName,PassWord:PassWord};

userBox=JSON.stringify(userBox); //转化为字符串类型哦~!!!!!!!!!!!!!!! AJSOgo('GET', 'http://127.0.0.1:8087/giveUserSql?userBox='+userBox,getUserBox);复制代码

好的!

node.js获取到数据,也要转化为json对象哦

//用户注册写入数据库app.get('/giveUserSql', function (req, res) { //获取name的值,记得看哈body有没有引入进来 var userBox = req.query.userBox; var getmySQLCon = getmySQL(); userBox=JSON.parse(userBox); console.log(userBox); //启动数据库 getmySQLCon.connect(); var sql = `INSERT INTO users (Phone,UserName,PassWord) VALUES ("${userBox.Phone}","${userBox.UserName}","${userBox.PassWord}")`; console.log(sql); getmySQLCon.query(sql, function (err, result) { if (err) { console.log("出错了:" + err.message); res.send({ state: false, des: "出错了:" + err.message }); return; } else { if (result.affectedRows > 0) { res.send({ state: true, des: result }) } else { res.send("注册失败") } } getmySQLCon.end(); })})复制代码

搞定!

不管什么数据,得到结果的function里面都要进行转化

function getUserBox(th){ th=JSON.parse(th);//转化一下,我这里没有必要使用啦~但是如果需要调用返回的值,可以用哦~ if(th.stat){//突然发现这个也超级有作用 哈哈哈 alert("注册成功!!+th.des[0].username"); return true; }else{ alert("没有注册成功,请重新注册!!"); } }复制代码

ok 以上总结

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐