【问题标题】:Define object in javascript在javascript中定义对象
【发布时间】:2012-05-25 03:25:09
【问题描述】:

我用express和jade为sum 3个数字写了一些脚本......

在 index.jade 我有 3 个字段和提交按钮:

!!! 5
html
  head
    title Test
  body
    form(name='form1', method='post', action='')
      label(for='1')
      input#1(type='text', name='1')
      label(for='2')
      input#2(type='text', name='2')
      label(for='3')
      input#3(type='text', name='3')
      input(name='submit', type='button', value='submit') 
    span #{result}

在服务器端(js code-node.js)我有这个代码:

var express = require('express');
        app = express.createServer();

app.configure(function(){
    app.set('views', __dirname + '/views');
    app.set('view engine', 'jade');
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(app.router);
    app.use(express.static(__dirname + '/public'));
});
app.use(express.bodyParser());
    app.get('/', function(req, res){
     res.render('index');
    });


    app.post('/', function(req, res){
      var i = req.param('1', null);
      var j = req.param('2', null);
      var k = req.param('3', null);
      var r = i+j+k;
      res.render('index', {result:r});

    });
app.listen(3010);

但每次我通过节点 app.js 启动 js 文件时,我都会提示对象未定义,并且玉文件中有一些错误:

如何在 app.js 文件中定义对象?

错误:

ReferenceError: C:\Users\PC\glowing-frost-5319/views/index.jade:14
    12. '      input#3(type=\'text', name='3')
'
    13. '      input(name=\'submit', type='button', value='submit') 
'
    14. '    #{result}'

result is not defined
    at Object.<anonymous> (eval at <anonym... etc.

谁能告诉我如何定义对象结果以及如何在 index.jade 页面上显示?

【问题讨论】:

    标签: javascript node.js pug


    【解决方案1】:

    我认为您需要将第二个参数中的结果传递给您的 get 路由中的渲染方法(就像您已经在 post 路由中所做的那样)。

    试试这个:

    app.get('/', function(req, res){
        res.render('index', {result: ''});
    });
    

    这将使result 变量在您的视图中可用(在本例中值为空字符串)。

    【讨论】:

    • 我也试试:res.render('index', {result: 0});
    • 缺少布局是一个单独的问题。如果您没有布局,则将 layout: false 传递给 render 方法将在没有布局的情况下呈现您的视图。如果您根本没有布局,则可以使用 app.set('view options', {layout: false}); 将其设置为应用程序范围的视图选项;您可以在expressjs.com/guide.html#view-rendering 找到有关视图布局的更多信息。
    • 当我点击提交时,什么也没发生!为什么?
    • 所以点击提交按钮将 3 个数字相加并没有发生任何事情...必须将结果写入 span...
    • 可能因为 submit 不是调用/
    猜你喜欢
    • 2014-10-05
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 2020-04-07
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    相关资源
    最近更新 更多