如何防止Node.js向ajax post请求发送成功标头

如何防止Node.js向ajax post请求发送成功标头,ajax,node.js,Ajax,Node.js,我试图使用res.end(“{”success:“Updated Successfully”,“status”:200}”)向ajax请求发送一个成功状态但遇到以下错误:错误:发送邮件后无法设置邮件头。基本上,当用户数据保存在服务器上时,我希望ajax刷新页面,不过,我认为在app.post中的某个地方,在我尝试手动执行之前,会发送一条成功消息。如何防止任何成功消息被发送到ajax post请求,以便手动执行 app.post('/signup', function (req, res) { v

我试图使用
res.end(“{”success:“Updated Successfully”,“status”:200}”)向ajax请求发送一个成功状态但遇到以下错误:错误:发送邮件后无法设置邮件头。基本上,当用户数据保存在服务器上时,我希望ajax刷新页面,不过,我认为在app.post中的某个地方,在我尝试手动执行之前,会发送一条成功消息。如何防止任何成功消息被发送到ajax post请求,以便手动执行

app.post('/signup', function (req, res) {
var userDetails = User({
    username: req.body.username,
    email: req.body.email,
    password: bcrypt.hashSync(req.body.password1, bcrypt.genSaltSync(10))
});

User.findOne({
    $or: [{
        'username': req.body.username
    }, {
            'email': req.body.email
        }]
}, function (err, user) {
    if (user) {
        if (allClients.indexOf(req.body.socket)) {
            if (user.username === req.body.username) {
                io.to(req.body.socket).emit('userInfo', 'That username is already in use.');
            } else {
            }
            if (user.email === req.body.email) {
                io.to(req.body.socket).emit('userInfo', 'That email is already in use.');
            } else {
            }
        } else {
            console.log('timeout error 822')
        }
    } else {
        req.login(userDetails, function (err) {
            if (!err) {
                userDetails.save(function (err) {
                    if (err) throw err;
                    res.end('{"success" : "Updated Successfully", "status" : 200}');
                    res.redirect('/');
                });
            } else {
                console.log(err)
            }
        })
    }
    if (err) {
        return done(err);
    }
});
});
这是我的ajax请求

 $("#form1").submit(function(e) {
        e.preventDefault();
        $.ajax({
            datatype: "json",
            type: "POST",
            url: '/signup',
            data: $(this).serialize(),
            success: function(result)
            {
                console.log(result);
                if(result.status == 200){
                    window.location.reload(true); 
                }
            }
        });
    });

我认为问题在于代码:

res.end('{"success" : "Updated Successfully", "status" : 200}');                  
res.redirect('/');
仅将上述内容替换为

res.status(200).send({"success" : "Updated Successfully", "status" : 200})

res.redirect是将用户带到另一个页面(它调用get路由)。您遇到的错误是因为node在将响应发送回ajax或重定向之间混淆了。

您使用的是Express吗?如果是这样,您可以使用
res.status(200).send(“更新成功”)请注意,默认情况下res.send()将返回200