【问题标题】:How does redirecting from a post method to get method work?从 post 方法重定向到 get 方法是如何工作的?
【发布时间】:2019-10-18 12:09:55
【问题描述】:

在mongodb中执行一些查询后,除了post方法之外,服务器无法识别任何get请求。

express 中间件采用 post 方法,在与数据库交互并使用 res.redirect() 获取其他 get 方法后,服务器根本无法识别请求。我尝试使用 res.all()。这表明请求已被看到,但未采取任何操作。

var express = require('express');
var router = express.Router();

var Product = require('../models/product');

router.get('/', function(req, res, next) {`//homepage
    res.render("index");
}

router.post('/add',function(req,res next){  
    //Product model
    var prod = new Product({
        //data here
    });

    prod.save(function(err,res2){
        if(err){
            console.log(err);
            return res.redirect('/error');
        }
        else{
            mongoose.disconnect();
            console.log("Complete1");
            return res.redirect('/');
            console.log ("Complete2);
        }
    }); 
}

在我到达 post 方法后,它应该重定向到主页

【问题讨论】:

    标签: express npm handlebars.js


    【解决方案1】:

    问题可能不在于后端,而在于前端。如果您使用 AJAX 发送您的 POST 请求,它专门设计为不会更改您的 url。

    在 AJAX 的请求完成后(在 .done() 中)使用 window.location.href 使用所需路径更新 URL,或者在收到从请求返回 HTML

    【讨论】:

    • 我正在从 post 方法重定向,因为我编写了上面的示例代码。 HTML 的表单标签重定向到路由器的 post 方法,并在与数据库交互后尝试将其重定向回 post 方法中的 get 方法,这就是无法使用 get 方法的问题所在。
    • 你使用的是 JQuery 还是 AJAX?
    • 很抱歉我没有在帖子中提及。我正在使用快速中间件。
    • 试试这个:替换 var router = express.Router();使用 var app = express();然后将 router.get 和类似的路由更改为 app.get 看看是否有帮助。
    • 谢谢我修好了。在每次导致其他获取方法(使用猫鼬)连接无响应的交互之后,我都断开了猫鼬的连接。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-01
    • 2014-06-20
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 2014-12-08
    • 2020-07-05
    相关资源
    最近更新 更多