0

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

$.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”,我的重定向将不起作用。我应该在哪里放置重定向代码?这是否正常,我必须将它放置两次 - 在服务器和客户端上?谢谢!

4

2 回答 2

5

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

如果你想在服务器端重定向而不是你不应该使用 Ajax,只需简单的旧 post 请求。

于 2012-06-11T09:48:10.293 回答
3

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

于 2012-06-11T11:14:11.727 回答