![](/img/trans.png)
[英]Showing a message on res.redirect in Express / Node.Js app
[英]Problems with res.redirect in Node.js (Express)
我有一個通過AJAX發出POST請求的按鈕,我想在頁面完成后刷新頁面。
因此,我的AJAX執行POST到/upgrade
:
app.post("/upgrade", game.upgrade);
exports.upgrade = function(req,res){
player.findOne({name:req.session.name}, function(err, doc){
//doing something
doc.save(function(err){
if(err) console.log(err);
else res.redirect("/game/buildings");
});
});
}
如您所見, redirect
轉到/game/buildings
app.get('/game/buildings', game.buildings);
export.buildings = function(req,res){
playerDB.findOne({name:req.session.name}, function(err, doc){
//doing something
res.render('./game/buildings', {username:req.session.name});
}
}
問題是升級方法中的res.redirect
可以工作,但是在buldings
處理程序中, res.render
似乎被忽略了。
我在buildings
方法內添加了console.log("session: "+req.session.name)
,這沒關系。 所有數據似乎都可以,但是res.render
無法正常工作。
在控制台日志中,當我使用菜單轉到/game/buildings
路徑時(這種方式很好用),它會打印出以下內容:
routing to buildings
session: Neoares
[90mGET /game/buildings [32m200 [90m48ms - 6.58kb[0m
[90mGET /javascripts/jquery.js [36m304 [90m0ms[0m
[90mGET /javascripts/game.js [36m304 [90m1ms[0m
[90mGET /stylesheets/bootstrap.min.css [36m304 [90m1ms[0m
[90mGET /stylesheets/justified-nav.css [36m304 [90m1ms[0m
[90mGET /images/buildings/wishing_well.svg [36m304 [90m1ms[0m
[90mGET /images/resources/wood.png [36m304 [90m1ms[0m
[90mGET /images/resources/stone.png [36m304 [90m2ms[0m
[90mGET /images/resources/iron.png [36m304 [90m1ms[0m
但是當我通過AJAX按鈕時,它僅打印以下內容:
routing to buildings
session: Neoares
[90mGET /game/buildings [32m200 [90m98ms - 6.58kb[0m
AJAX和重定向不兼容。 根據定義,AJAX在單獨的上下文中與服務器進行交互,瀏覽器從該上下文中將其加載到地址欄中。 因此,執行AJAX請求然后進行重定向響應根本不會自動影響瀏覽器的window.location
,因此,將重定向發送到AJAX請求幾乎總是錯誤的。 您可以執行的操作是,如果POST到/upgrade
成功,則可以在瀏覽器中使用javascript將window.location
設置為正確的路徑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.