关于表单验证,jQuery提供了一个serializeArray方法
//这里封装一个函数
function serializeToJson(form){
var res = {};
//这里的数据格式:[{name:'email', value:'123@123.123'}, ....]
var f = $('#logForm').serializeArray();
f.foreach(element => {
result[element.name] = element.value;
});
//返回的数据格式:{email: "123@123.123", password: "123"}
return result;
}
解析请求参数的body-paser
在项目中是搭配express框架使用。
const express = require('express');
const app = require('body-parser');
const bodyParser = require('body-parser');
//然后在中间件中拦截所有请求,把请求交给body-parser对象下面的url-encoded方法
//extended:false 表示方法内部会使用系统模块queryString去处理参数格式
app.use(bodyParser.urlencoded({ extended: false }));
设置完毕之后,在路由中可以如下获取参数了
ad.post('/path', (req, res)=>{
//body-parser会再req下添加一个body属性,里面就是参数的值
let mData = req.body;
});
nodejs中的cookie与session
实现session的express-session(express官方提供)
也是一个express框架的中间件函数,因此也用app.use中间件拦截所有请求,将请求教给session方法去处理,方法内部:
1.会为请求对象下面添加一个叫session的属性, 这个属性的值是一个对象,对象可以在用户登录成功后保存用户信息。
2.方法内部会在我们向session对象中存储数据时生成sessionid, sessionid是我们当前存储的数据的唯一标识,
然后将sessionid存储在客户端的cookie中。
3.当客户再一次访问服务器端的时候,方法会拿到客户端传递过来的cookie并拿出sessionid,在session中根据sessionid找到用户信息。
注意:当网站服务器重启的时候,服务器端的session对象就会失效。
const session = require('express-session');
//secret key是加密cookie信息的,当我们向客户端存储数据时需要对数据加密
//服务器端接收到cookie时,需要这个秘钥用来解密
app.use(session({
secret: 'key' ,
saveUninitialized: false, //未初始化是不保存
cookie:{
maxAge: 24* 60 * 60 * 1000; //设置cookie有效期
}
}));