浏览器中玉器服务器端传递的variables为空
我有一个奇怪的问题,那就是传递给玉的variables在浏览器中是空的,看起来传入的variables是空的,但它不是
nodejs代码(整个路由代码):
exports.sensorsettings = function(req, res){ if (!req.session.username) { // if false render res.render('login', { logo: 'img/owl.png', id: 'home', brand: brand }) } else { if(!req.query.sid) (res.redirect('/dashboard')); // get sid information from database db.collection('sensors').findOne({sid:req.query.sid}, function(err, result) { console.log('this is result:' + result); if (result) { console.log('this is result:' + result.name); result= JSON.stringify(result); res.render('new-sensor-settings', { username: req.session.username, name:result.name, ipaddress: result.ipaddress, desc: result.desc, snmpcom: result.snmpcom, snmpver: result.snmpver, snmpport: result.snmpport, snmpifindex: result.snmpifindex, ncusername: result.ncusername, ncport: result.ncport}) }; if (!result) res.redirect('/errors?err=db'); }); // if true redirect res.render('new-sensor-settings', { username: req.session.username, id: 'home', brand: brand }) } };
玉档(整体forms):
form.form-horizontal .tab-content(style='padding: 0;') #account-details.tab-pane .row-fluid .span6 .control-group label.control-label Community .controls input#s_snmpcom.span10(type='text', value=snmpcom) span.btn-action.single.glyphicons.circle_question_mark(style='margin: 0;', data-toggle='tooltip', data-placement='top', data-original-title='Specify your device Public Community name (For SNMP version 2c)') i .control-group label.control-label Port Number .controls input#s_snmpport.input-mini(type='text', value=snmpport) span.btn-action.single.glyphicons.circle_question_mark(style='margin: 0;', data-toggle='tooltip', data-placement='top', data-original-title='Specify your device SNMP port number, Default number is 161 ') i .span6 .control-group label.control-label Version .controls select#s_snmpver.selectpicker.span6(data-style='btn-default', style='display: none;') option 1 option 2c option 3 .control-group label.control-label IfIndex .controls input#s_snmpif.input-mini(type='text', value=snmpifindex) span.btn-action.single.glyphicons.circle_question_mark(style='margin: 0;', data-toggle='tooltip', data-placement='top', data-original-title='Specify your SNMP interface index number.it could be found at interface details of your device') i hr.separator.bottom .row-fluid .span6 .control-group label.control-label Username .controls input#s_ncuser.span10(type='text', value=ncusername) span.btn-action.single.glyphicons.circle_question_mark(style='margin: 0;', data-toggle='tooltip', data-placement='top', data-original-title='Specify your device Netconf username, it could be on of defined username on your device with readonly access.') i .control-group label.control-label Port Number .controls input#s_ncport.input-mini(type='text', value=ncport) span.btn-action.single.glyphicons.circle_question_mark(style='margin: 0;', data-toggle='tooltip', data-placement='top', data-original-title='Specify your device ssh port number, Default number is 22 ') i .span6 .control-group label.control-label password .controls input#s_ncpass.span10(type='password', value='') span.btn-action.single.glyphicons.circle_question_mark(style='margin: 0;', data-toggle='tooltip', data-placement='top', data-original-title='Enter the password of Netconf username') i .form-actions(style='margin: 0;') button.btn.btn-icon.btn-primary.glyphicons.circle_ok.pull-right(type='submit') i | Save changes button.btn.btn-icon.btn-default.glyphicons.circle_remove.pull-right(type='button') i | Cancel #account-settings.tab-pane.active .row-fluid .span3 strong Sensor General Settings p.muted Configure Sensor basic settings here,all fields are required. .span9 label(for='s_name') Name input#s_name.span10(type='text', value=name) span.btn-action.single.glyphicons.circle_question_mark(style='margin: 0;', data-toggle='tooltip', data-placement='top', data-original-title='Give your sensor a name so you could call it!') i .separator label(for='s_ip') IP Address input#s_ip.span10(type='text', value=ipaddress , placeholder='' ) span.btn-action.single.glyphicons.circle_question_mark(style='margin: 0;', data-toggle='tooltip', data-placement='top', data-original-title='Enter sensor IP address here') i .separator label(for='s_offline') Sensor Offline input#inputPasswordNew.span12(type='text', value='', placeholder='if your sensor is down for maintenance, change its status to offline') .separator label(for='s_description') Description input#s_description.span12(type='text', value=desc) .separator .form-actions(style='margin: 0; padding-right: 0;') button.btn.btn-icon.btn-primary.glyphicons.circle_ok.pull-right(type='submit') i | Save changes
注意:除了用户名variables以外的所有内容都不起作用 我试图为这些variables(例如名称:'testing')分配一个静态值,但它也不会工作。
很难说出你要在这里完成什么,但这是一个起点。 我做的主要变化是删除了两条线
// if true redirect res.render('new-sensor-settings', { username: req.session.username, id: 'home', brand: brand })
因为那些在db.collection.findOne
的callback之前被执行,因此阻止了在调用内部res.render
时发送的响应。 我只是猜测,这些线是无关的,也许是从以前的函数迭代剩余。 如果它们不是偶然的,请提供有关该function应该执行的更多信息。
我做的其他小改动:
重新缩小到2个空格。
我在if(!req.query.sid)
语句中添加了大括号。 (没有大括号的单行if
语句没有问题,但是可维护性较差,所以我个人偏好总是添加它们。)
我在发送回复的语句前添加了return
。 由于res.redirect
和res.render
语句全部放置在各自的if
块的末尾,因此不再有任何两个执行的机会。 所以这里的return
并不是非常必要的 – 这只是我个人偏好的使用方式,明确的是现在已经发送了响应,在这个路由中不应该执行进一步的代码。
if(!result)
到附加到前一个if(result)
的else块中,
exports.sensorsettings = function(req, res){ if (!req.session.username) { // if false render return res.render('login', { logo: 'img/owl.png', id: 'home', brand: brand }) } else { if(!req.query.sid){ (return res.redirect('/dashboard')); } // get sid information from database db.collection('sensors').findOne({sid:req.query.sid}, function(err, result) { console.log('this is result:' + result); if (result) { console.log('this is result:' + result.name); // Problem here too: result= JSON.stringify(result); // result is now a string, trying to access properties will be undefined return res.render('new-sensor-settings', { username: req.session.username, name:result.name, ipaddress: result.ipaddress, desc: result.desc, snmpcom: result.snmpcom, snmpver: result.snmpver, snmpport: result.snmpport, snmpifindex: result.snmpifindex, ncusername: result.ncusername, ncport: result.ncport}) } else { return res.redirect('/errors?err=db'); }; }); } };
试试这个符号#{ipaddress}
,每次都适合我
- 帕格(RIP翡翠)formscheckbox – 无论select多less,只返回一个值
- Webpack – 不输出某个入口点的包
- 使用Node + Express web API的angular度应用程序返回JSON资源vs服务器端模板引擎
- 使用Jade,NodeJS,Express的dynamichtml页面
- 为什么我的json对象的`email`属性不显示在我的模板中?
- 你如何在一个快速的应用程序设置玉basedir选项? (“basedir”选项需要使用“扩展”和“绝对”path)
- dynamic翡翠包括
- 无法使DataTables与Jade一起使用
- 如何使用Node.js将variables传递给Jade中的页脚