html - 用ajax提交表單后,返回驗證數據在頁面location.href跳轉到主頁,怎么傳遞session給主頁
問題描述
app.post(’/user/signin’,function(req,res){ var user=req.body.user; var {name,password}=user; User.findOne({name:name},function(err,user){if(err) console.log(err);if(!user) return res.json({state:1});user.comparePassword(password,function(err,isMatched){ if(err) console.log(err); if(isMatched) {res.json({state:3}); } else res.json({state:2});}); });});
$(’#signinModal .btn-success’).on(’click’,function(e){
$.ajax({ type:’POST’, url:’/user/signin’, data:$(’#signinModal form’).serialize(), success:function(data){switch(data.state){ case 1:$(’#errorName’).css({opacity:1});break; case 2:$(’#errorPassword’).css({opacity:1});break; case 3:location.href=’/’;break; }} });
});
問題解答
回答1:你可以通過req.session.user = userInfo將用戶信息賦值給req.session.user這個當你跳轉到主頁時你可以通過req.session.user獲取用戶信息。如果你的前端頁面需要的話,你可以在渲染的時候傳值過去,比如
res.render(’index’,{ user: req.session.user});
如果你使用的是express框架的話可以使用res.locals.user = req.session.user;這樣你的頁面直接使用user這個變量就可以獲取了,比如:
<p class='menu'><% if (user) { %> <a href='http://www.aoyou183.cn/posts?author=<%= user._id %>'>個人主頁</a> <p class='pider'></p> <a href='http://www.aoyou183.cn/posts/create'>發表文章</a> <a href='http://www.aoyou183.cn/signout'>登出</a><% } else { %> <a href='http://www.aoyou183.cn/signin'>登錄</a> <a href='http://www.aoyou183.cn/signup'>注冊</a><% } %> </p>回答2:
(舉java后臺為例)前端ajax提交表單后(var loader = new net.AjaxRequest(url, deal_data, onerror, 'POST', params);)[注:net.AjaxRequest是預定義好的一個函數,其中deal_data為ajax請求成功后的回調處理函數],后臺進行業務處理后,使用JSONArray放置需返回的結果,httpservletresponse寫進去,返回給前端,
JSONArray jsonArray = new JSONArray();jsonArray.add(0, true);response.getWriter().print(jsonArray);
由ajax的回調函數處理:獲得返回文本,解析成json數據,按需處理。
var datas = eval(this.req.responseText);
