Excuting an order:
npm install mysql --save
nodemon ./bin/www
app.js
var express = require('express');
var path = require('path');
var app = express();
var sqlQuery = require('./lcMysql');
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(express.static(path.join(__dirname, 'public')));
// 搜索首页
app.get('/', (req, res) => {
res.render('index.ejs')
})
// 自己封装提取get方式表单数据
app.get('/search', (req, res) => {
// console.log(req.url); url地址
// 提取?后面的字符串
let queryStr = req.url.split('?')[1];
// 对表单提交的键值对进行分割
let keyValueArr = queryStr.split('&');
// 设置一个query对象,将键值对以对象的属性形式进行保存
let query = {};
keyValueArr.forEach(function (item, i) {
// searchKey=admin,进行分割
let key = item.split('=')[0];
let value = item.split('=')[1];
query[key] = value;
})
console.log(query);
console.log(query.searchKey);
console.log(query.username);
res.send("搜索页面到啦");
})
// 使用express自带的get获取数据方式
// express在req对象上直接封装好了query属性
app.get('/search1', async (req, res) => {
console.log(req.query);
// 根据req.query.searchKey的内容,查找电影
let strSql = "select * from book where bookname like '%" + req.query.searchKey + "%'";
let result = await sqlQuery(strSql);
res.json(Array.from(result));
// res.send("搜索页面2到");
})
// ajax页面
app.get('/ajax', (req, res) => {
res.render('ajax.ejs');
})
module.exports = app;
index.ejs
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>搜索首页</title>
</head>
<body>
<!--
action:为提交到服务器的地址
-->
<form action="/search1" method="get">
<input type="text" name="searchKey">
<input type="text" name="username">
<input type="submit" value="搜索">
</form>
</body>
</html>
ajaxnejs
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ajax做的get请求</title>
</head>
<body>
<script src="/js/jquery.min.js"></script>
<script>
let httpUrl = '/search1?searchKey=鲁滨逊';
$.get(httpUrl).then(function (res) {
console.log(res);
res.forEach((item, i) => {
$('body').append("<h1>" + item.bookname + "</h1>")
})
})
</script>
</body>
</html>
post request:
No information in url
Parse the data submitted by the post (only if you have this can be parsed): app.use(express.urlencoded());
// 获取post提交的请求
app.post('/search1', (req, res) => {
// console.log(req.query);
// 注意:post提交的数据不在query属性上,在body上,而且需要app.use(express.urlencoded());进行解析
console.log(req.body);
res.send("我到了");
})
// 显示登录页
app.get('/login', (req, res) => {
res.render('login');
})
// 处理登录请求
app.post('/login', async (req, res) => {
// 获取用户名和密码
let username = req.body.username;
let password = req.body.password;
// 查询数据库是否有此用户名和密码
let sqlStr = 'select * from user where username = ? and password = ?';
let arr = [username, password];
let result = await sqlQuery(sqlStr, arr);
if (result.length == 0) {
res.send("登录成功");
} else {
res.send("登录失败");
}
})