關(guān)于表單驗(yàn)證攀痊,jQuery提供了一個(gè)serializeArray方法
//這里封裝一個(gè)函數(shù)
function serializeToJson(form){
var res = {};
//這里的數(shù)據(jù)格式:[{name:'email', value:'123@123.123'}, ....]
var f = $('#logForm').serializeArray();
f.foreach(element => {
result[element.name] = element.value;
});
//返回的數(shù)據(jù)格式:{email: "123@123.123", password: "123"}
return result;
}
解析請(qǐng)求參數(shù)的body-paser
在項(xiàng)目中是搭配express框架使用丐箩。
const express = require('express');
const app = require('body-parser');
const bodyParser = require('body-parser');
//然后在中間件中攔截所有請(qǐng)求托嚣,把請(qǐng)求交給body-parser對(duì)象下面的url-encoded方法
//extended:false 表示方法內(nèi)部會(huì)使用系統(tǒng)模塊queryString去處理參數(shù)格式
app.use(bodyParser.urlencoded({ extended: false }));
設(shè)置完畢之后檩帐,在路由中可以如下獲取參數(shù)了
ad.post('/path', (req, res)=>{
//body-parser會(huì)再req下添加一個(gè)body屬性,里面就是參數(shù)的值
let mData = req.body;
});
nodejs中的cookie與session
實(shí)現(xiàn)session的express-session(express官方提供)
也是一個(gè)express框架的中間件函數(shù)咆霜,因此也用app.use中間件攔截所有請(qǐng)求邓馒,將請(qǐng)求教給session方法去處理,方法內(nèi)部:
1.會(huì)為請(qǐng)求對(duì)象下面添加一個(gè)叫session的屬性蛾坯, 這個(gè)屬性的值是一個(gè)對(duì)象光酣,對(duì)象可以在用戶登錄成功后保存用戶信息。
2.方法內(nèi)部會(huì)在我們向session對(duì)象中存儲(chǔ)數(shù)據(jù)時(shí)生成sessionid脉课, sessionid是我們當(dāng)前存儲(chǔ)的數(shù)據(jù)的唯一標(biāo)識(shí)救军,
然后將sessionid存儲(chǔ)在客戶端的cookie中。
3.當(dāng)客戶再一次訪問服務(wù)器端的時(shí)候倘零,方法會(huì)拿到客戶端傳遞過來的cookie并拿出sessionid唱遭,在session中根據(jù)sessionid找到用戶信息。
注意:當(dāng)網(wǎng)站服務(wù)器重啟的時(shí)候呈驶,服務(wù)器端的session對(duì)象就會(huì)失效拷泽。
const session = require('express-session');
//secret key是加密cookie信息的,當(dāng)我們向客戶端存儲(chǔ)數(shù)據(jù)時(shí)需要對(duì)數(shù)據(jù)加密
//服務(wù)器端接收到cookie時(shí)袖瞻,需要這個(gè)秘鑰用來解密
app.use(session({
secret: 'key' ,
saveUninitialized: false, //未初始化是不保存
cookie:{
maxAge: 24* 60 * 60 * 1000; //設(shè)置cookie有效期
}
}));