无法从骨干发布到表达

时间:2012-12-24 07:25:52

标签: javascript node.js backbone.js express

以下是我正在研究的观点。这是一个简单的注册表格。它从一组输入标签中捕获数据,并将其发布到服务器。然而,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(Internal Server Error)”

2 个答案:

答案 0 :(得分:3)

这很有用。我在req.param中找到了数据。

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);
    }
});

答案 1 :(得分:1)

如果您熟悉http,您知道500这是服务器响应客户端的状态,它告诉客户端我处理您发布的数据时出现问题。因此,请关注服务器端代码。目前,服务器代码中存在一些逻辑问题。