【问题标题】:NodeJS + jQuery: Redirect after POST: client or server - which is better?NodeJS + jQuery:POST 后重定向:客户端或服务器 - 哪个更好?
【发布时间】:2012-06-14 04:26:45
【问题描述】:

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

【问题讨论】:

    标签: jquery node.js redirect post


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,它有效!据我了解, res.send() 是使 AJAX 代码执行回调函数的必要条件?
    • 这与该功能无关,但我想它与响应代码有关。 res.send() 返回 200(除非指定自定义代码),而 res.redirect() 返回 301 作为响应代码,我的猜测是 jQuery 不喜欢 2xx 以外的任何内容(但应该检查)。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2010-09-21
      • 1970-01-01
      • 2018-07-19
      • 2017-06-08
      • 1970-01-01
      • 2020-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多