これが私が取り組んでいるビューです。簡単な登録フォームです。入力タグのグループからデータをキャプチャし、サーバーに投稿します。ただし、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;
});
これが私のアプリのリクエストリスナーです。ログに記録されると、すべての変数は「未定義」と表示されます。
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 htp:// localhost:3000 / register 500(内部サーバーエラー)」だけです。