簡體   English   中英

Node.js中的res.redirect問題(Express)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM