无法从主干进行POST来expression

这是我正在研究的观点。 这是一个简单的registry格。 它从一组input标签捕获数据,并将其发布到服务器。 但是,POST数据似乎并没有被传送到服务器。

define(['text!templates/register.html'], function(registerTemplate){ var registerView = Backbone.View.extend({ el: $('#content'), events: { "submit form" : "register" }, register: function() { var postData = { firstname: $('input[name=firstname]').val(), lastname: $('input[name=lastname]').val(), email: $('input[name=email]').val(), password: $('input[name=password]').val() }; $.post('/register', postData, function(data){ console.log(data); } }).error(function(err){ console.log(err); }); return false; }, render: function(){ this.$el.html(registerTemplate); } }); return registerView; }); 

这是我的应用程序中的请求侦听器。 logging时,所有的variables显示“未定义”。

 app.post('/register', function(req, res){ var firstname = req.body.firstname, lastname = req.body.lastname, email = req.body.email, password = req.body.password; console.log(email); console.log(firstname); console.log(lastname); console.log(password); if (email === null || password === null) { res.send(400); } else { Account.register(email, password, firstname, lastname); res.send(200); } }); 

我可以看到,我的应用程序中的侦听器在提交表单时被触发,但它没有获取我发送的POST数据。 在浏览器控制台中,我得到一个错误是“POST HTT://本地主机:3000 /注册500(内部服务器错误)”

这工作。 我在req.param中find了这些数据。

 app.post('/register', function(req, res){ var firstname = req.param('firstname'), lastname = req.param('lastname'), email = req.param('email'), password = req.param('password'); if (email === null || password === null) { res.send(400); } else { Account.register(email, password, firstname, lastname); res.send(200); } }); 

如果你熟悉http,你知道500是服务器对客户端的响应状态,它告诉客户端在处理你发布的数据时有问题。 所以关注你的服务器端代码。大多数情况下,你的服务器代码有一些逻辑上的问题。