node 路由
来源:互联网 发布:淘宝上架话费充值 编辑:程序博客网 时间:2024/05/21 19:37
- req.params 一个数组,包含命名过得路由参数
router.get(‘/user/shop/:id’, user.shop);
对于这样的路由,在controller获取产品的id,需要用:
var productId = req.params.id;
2.req.body 一个对象,包含post请求参数,这个一般都是form表单提交。这样命名是因为post请求参数在request正文中传递,而不像查询字符串在url中传递。要使req.body可用,需要中间件解析请求。下面是截取项目一段的用法.form是在html里面<form action="/user/savePassword" method="post"> <section> <p> <button class="retun_btn">原密码</button> </p> <input id="oldPsd" name="oldPasswd" type="password" name="" id="" value="" placeholder="请输入原密码"/> </section> <section> <p> <button class="retun_btn">新密码</button> </p> <input id="newPsd" name="newPasswd" type="password" name="" id="" value="" placeholder="由6~18位数字、字母组成"/> </section> <p> <button class="chps_confirm">确认</button> </p> <input type="hidden" name="loadingText" id="loadingText" value="提交中,请稍后..."/> </form>在nodejs里面的controllerUserController.prototype.savePasswd = function(req, res) { var oldPasswd = req.body.oldPasswd; var newPasswd = req.body.newPasswd; base.postJson({ url: req.API_HOST + '/api/user/changePasswd', form: { userId: req.session.userId, oldPasswd: oldPasswd, newPasswd: newPasswd } }, function(result) { var msg = ''; if (result.err_code == '0') { req.flash('msg', '密码修改成功'); res.redirect('/user/info'); } else { res.render('user/change-password', { msg: result.err_msg }); } }, req);};3.req.query一个对象,包含以键值对存放的查询字符串参数。在html页面下 <a class="display-block clear pBottom1 ownCard" href="/user/invest/<%=productId%>?cardId=<%=ocard.id%>">在controller里面,获取var cardId = req.query.cardId;4.req.originalUrl这个属性返回了 路径和查询字符串(它们不包含协议,主机或端口)。这个旨在保留原始请求和查询字符串.router.get('/user/unpay', user.unpayList);在controller里面,unpayList的var originUrl = req.originalUrl那么originUrl的植就是/user/unpay。5.在node里面,表单提交,html页面里面的form表单的action最好给一个有效值,可以是action="javascript:;"也可以是一个提交地址,还有的是method = "post",这个方法要写出来6.res.locals和req.flash的用法router.all('/test', pay.test);在controller下面的一个方法PayController.prototype.test = function (req, res) { res.locals.msg = "这是一个测试"; res.render('test');};在html页面上<body> <p><%=outString(msg)%></p></body>html页面运行结果是<p>这是一个测试</p>因此res.locals是一个对象,包含用于渲染视图的默认上下文。res.render使用配置的模板引擎渲染视图。PayController.prototype.test = function (req, res) { req.flash("msg","这是一个测试"); res.render('test',{msg:req.flash("msg")});};在html页面上<body> <p><%=outString(msg)%></p></body>html页面运行结果是<p>这是一个测试</p>7.form表单提交出去,返回错误信息,回到当前提交的表单页面。例如。在code这个页面:这个页面的路由是:musicController.prototype.acticket = function(req, res) { res.locals.topMenu = "acticket"; req.session.flagMusic = null; req.session.flagMusicGrab = null; req.session.flagMusicTicket = true; var userId = req.session.userId; if(userId){ base.postJson({ url: req.API_HOST + '/api/wechat/isNotActivateMusicCode', form: { userId:req.session.userId, } }, function(result) { if (result.err_code == '0') { res.render('music/acticket',{ isActive:result.data.acStatus, msg:req.flash("msg") }); }else{ msg = result.err_msg; res.render('music/acticket',{ msg: result.err_msg }); } }, req); }else { res.redirect('/login'); }};<form action="/musicCode" method="post"> <input type="text" maxlength="6" class="text-input" placeholder="输入激活码" name="codeMusic"/> <button type="submit" class="btn">激活门票</button></form><section id="msTip"> <input type="text" name="" id="msg" value="<%=outString(msg)%>"/> </section>这个表单提交到router.post('/musicCode',music.musicCode);musicController.prototype.musicCode = function(req, res) { var code = req.body.codeMusic; base.postJson({ url: req.API_HOST + '/api/wechat/activateMusicCode', form: { userId: req.session.userId, code:code } }, function(result) { if (result.err_code == '0') { if(result.data.status == 0){ var msg = " "; req.flash('msg', '激活码错误,请重新输入'); res.redirect('/musicf/acticket'); }else{ res.render('music/actsuc'); } }else{ res.redirect('/musicf/acticket'); } }, req)};在controller里面EasonController.prototype.isExit = function(req, res) { var telphone = req.body.telephone; res.redirect("/easonPlay/lottery/"+"?tel="+telphone);};有一个路由router.all('/easonPlay/lottery',eason.lottery);EasonController.prototype.lottery = function(req, res) { var userId = req.session.userId; var tel = req.query.tel;//这样就可以获取到tel if(tel || userId){ res.render('eason/lottery',{telPhone:tel}); }else if(!userId || !tel){ res.redirect("/easonPlay"); }};在app.js里面有:app.set("title","myPhoto");那么在某一个html页面里面是<p><%=settings.title%></p>、那么运行结果是:<p>myPhoto</p>从express内部来看,它是用下面的javascript输出这个对象的:app.locals.settings = app.settings;
0 0
- node 路由
- Node.js express路由
- Node.Js路由
- Node.js 路由
- Node.js 路由
- Node.js 路由
- Node.Js - 路由Router
- node入门3----路由
- Node.js_路由
- Node.js 路由
- 08node.js路由
- Node.js 路由
- node.js 路由控制
- Node.js 路由
- node 路由的解析
- 【Node.js】静态路由
- Node.js 路由
- Node.js 路由改造
- java中异或^运算符的运用
- 实现CSS抠图-从集合图中抠出小图
- 如何做H5页面阴影悬浮效果
- nutch 的配置错误问题
- MVC学习笔记
- node 路由
- Jprofiler工具安装及使用
- install Apache on CentOS 7
- 基于Linux的免认证步骤
- Javascript的Array对象的迭代方法
- 数据库E-commerce管理
- spark源码学习(二):sparkContext的初始化分析(二)
- Repeater获取勾选数据,拼接成SQL实现批量删除+存储过程
- OpenCV求解的矩阵: CvMat与cvSolve函数