【问题标题】:Node Express 3.4.4 and Jade form data undefinedNode Express 3.4.4 和 Jade 表单数据未定义
【发布时间】:2014-04-30 07:16:31
【问题描述】:

以下是 app.use 部分

// redis/session store
app.use(express.cookieParser());
app.use(express.session({ 
    store: new redisStore({ host: 'localhost', 
                            port: 6379, 
                            db: 2
                            }), 
    secret: SID
}));

app.use(passport.initialize());
app.use(passport.session());

app.use(express.urlencoded());
app.use(express.methodOverride());
// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(app.router);
app.use(require('stylus').middleware(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'public')));

这是路由

var saveProfile     = require('./routes/saveProfile');
.
.
.

// form handling 
app.post('/saveProfile',saveProfile.save);

这是表单的处理程序

exports.save = function(req,res) {
    try {
        var i = 0;
        console.log(req.body.displayName);
    }
    catch(e) {
        console.log(e.message);
    }
};

最后是生成实际表单的翡翠代码

form(method='POST',action='/saveProfile')
    div(class='topBannerHeading')
        span.
            Profile
        div
            input.formButton(type='submit',text='Save',value='Save')
    div(class='formHolder')
        h1.
            Your Cloud Services
        a(href='/googleRequestAuthorization')
            img.selectedService(src='images/Google-48x48.png',alt='Authorize Google')
        h1.
            Personal
        span
            div.
                Name:
            input#displayName(type='text',value=profile.displayName,style='width:300px')
            div.
                Address:
            input#AddressLine1(type='text',style='width:300px')
            div.

            input#AddressLine2(type='text',style='width:300px')
            div.
                Town:
            input#AddressTown(type='text',style='width:200px')
            div.
                County: 
            input#AddressCounty(type='text',style='width:200px')
            div.
                Post/Zip code   
            input#Postcode(type='text',style='width:200px')
            div(style='margin-top:40px').
                Telephone   
            input#Telephone(type='text',style='width:200px')
            div.
                Mobile: 
            input#Mobile(type='text',style='width:200px')
            div.
                Fax No: 
            input#FaxNo(type='text',style='width:200px')
            div.
                Email:  
            input#EmailAddress(type='text',style='width:300px',value=profile.email)
            div.
                Web:    
            input#WebAddress(type='text',style='width:300px')
            input#id(type='text',style='visibility:hidden')

查看请求对象的标头

内容类型是 应用程序/x-www-form-urlencoded

内容长度恢复为 0(零)

我已经尝试添加BodyParser()

但尽管它调用处理程序 req.body.displayName 仍然是未定义的

知道我做错了什么,提前感谢。

【问题讨论】:

    标签: forms node.js post express pug


    【解决方案1】:

    使用名称而不是 ID。所以玉文件说的地方

    input#displayName(type='text',value=profile.displayName,style='width:300px')
    

    替换成

    input#displayName(type='text',name='displayName',value=profile.displayName,style='width:300px')
    

    这在另一个问题中得到了回答,可以在这里找到; nodejs, express and jade: problems with inserts from form to database

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-07
      • 2012-07-27
      • 2013-05-02
      • 1970-01-01
      • 2019-02-19
      • 2018-03-28
      • 1970-01-01
      • 2017-03-27
      相关资源
      最近更新 更多