NodeJS + jQuery:POST后重定向:客户端或服务器 - 哪个更好?

时间:2012-06-11 09:10:17

标签: jquery node.js redirect post

我试图通过jQuery发布后重定向到指定的页面。这是我的POST代码:

$.post("/addcompany", {
name: $('#company_name').val(),
phone: $('#company_phone').val(),
email: $('#company_email').val(),
suppliers: JSON.stringify(suppliers),
}, function(){
    alert('after post'); 
    window.location.href = '/companies';
    }
);

这是我在NodeJS上的后端代码:

app.post('/addcompany',function(req,res){
db.collection("companies",function(err,collection){
    collection.insert( {
        "name":req.body.name,
        "email":req.body.email,
        "phone":req.body.phone,
        "suppliers" : JSON.parse(req.body.suppliers)
    });
});
res.redirect('/companies');
});

问题是如果我不是在jQuery脚本和NodeJS后端代码中重定向到'/ companies',我的重定向不起作用。我应该在哪里放置重定向代码?这是正常的,我必须把它放两次 - 无论是在服务器上还是在客户端上?谢谢!

2 个答案:

答案 0 :(得分:5)

您应该只在这种情况下重定向到前端。为了实现这一点,我认为你应该在后端有res.send()(空200响应,让客户端知道服务器端的一切正常)。

如果你想在服务器端重定向而不是你不应该使用Ajax,只需要普通的旧帖子请求。

答案 1 :(得分:3)

发送重定向代码以响应AJAX请求不会自动使浏览器执行任何操作;您的客户端响应处理程序必须查看结果代码并在看到结果代码时重定向。我实际上建议这样做,而不是自动将window.location.href更改为客户端代码中的固定URL,这只是因为您的服务器端代码可能最终需要在错误条件下做出不同的响应(对于客户端来说不是一个好主意) - 代码巧妙地假设一切都是对服务器的请求是正确的。)