關(guān)于表單驗證,jQuery提供了一個serializeArray方法
//這里封裝一個函數(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;
}
解析請求參數(shù)的body-paser
在項目中是搭配express框架使用。
const express = require('express');
const app = require('body-parser');
const bodyParser = require('body-parser');
//然后在中間件中攔截所有請求,把請求交給body-parser對象下面的url-encoded方法
//extended:false 表示方法內(nèi)部會使用系統(tǒng)模塊queryString去處理參數(shù)格式
app.use(bodyParser.urlencoded({ extended: false }));
設(shè)置完畢之后,在路由中可以如下獲取參數(shù)了
ad.post('/path', (req, res)=>{
//body-parser會再req下添加一個body屬性,里面就是參數(shù)的值
let mData = req.body;
});
nodejs中的cookie與session
實現(xiàn)session的express-session(express官方提供)
也是一個express框架的中間件函數(shù),因此也用app.use中間件攔截所有請求,將請求教給session方法去處理,方法內(nèi)部:
1.會為請求對象下面添加一個叫session的屬性, 這個屬性的值是一個對象,對象可以在用戶登錄成功后保存用戶信息。
2.方法內(nèi)部會在我們向session對象中存儲數(shù)據(jù)時生成sessionid, sessionid是我們當(dāng)前存儲的數(shù)據(jù)的唯一標(biāo)識,
然后將sessionid存儲在客戶端的cookie中。
3.當(dāng)客戶再一次訪問服務(wù)器端的時候,方法會拿到客戶端傳遞過來的cookie并拿出sessionid,在session中根據(jù)sessionid找到用戶信息。
注意:當(dāng)網(wǎng)站服務(wù)器重啟的時候,服務(wù)器端的session對象就會失效。
const session = require('express-session');
//secret key是加密cookie信息的,當(dāng)我們向客戶端存儲數(shù)據(jù)時需要對數(shù)據(jù)加密
//服務(wù)器端接收到cookie時,需要這個秘鑰用來解密
app.use(session({
secret: 'key' ,
saveUninitialized: false, //未初始化是不保存
cookie:{
maxAge: 24* 60 * 60 * 1000; //設(shè)置cookie有效期
}
}));