【问题标题】:res.render() not working from axios requestres.render() 不适用于 axios 请求
【发布时间】:2021-04-27 20:19:08
【问题描述】:

我有两个 axios 请求:一个从 API 获取数据,另一个将接收到的数据发送到视图路由。

    const res = await axios({
        method: 'POST',
        url: 'http://127.0.0.1:8000/api/v1/shifts/summary',
        data: {
            from,
            to,
            client,
            cleaner,
            field,
        },
    });

    if (res.data.status === 'success') {
        showAlert('success', 'Running summary');
        window.setTimeout(async () => {
            await axios({
                method: 'POST',
                url: 'http://127.0.0.1:8000/summary_results',
                data: {
                    summary: res.data,
                },
            });
        }, 1500);

数据被正确传递到视图路由中,但是 res.render() 不会显示/渲染新页面:

exports.summaryResults = (req, res, next) => {
    res.status(200).render('summary_results', {
        title: 'Summary results',
        summary: req.body.summary,
    });
};

我根本没有收到任何错误。我在这里做错了什么?

【问题讨论】:

    标签: javascript node.js mongodb express axios


    【解决方案1】:

    您使用的是什么模板引擎?并已将 express 配置为使用模板引擎? IE app.set("view engine", "pug"); app.set("views", path.join(__dirname, "views")); 其中 views 是您拥有模板的目录的名称

    【讨论】:

    • 是的,我正在使用哈巴狗,并且完全按照您所说的进行了配置。我所有的其他观点都有效,所以绝对不是配置。难道是我正在向视图发送带有数据的 POST 请求吗?
    • 不,确认您有summary_results 文件
    • 我希望拼写错误是问题,但不是。我无法呈现任何视图,甚至无法从该方法重定向。我想我必须找到另一种将数据从 api 传递到视图的方法。
    • 我还是觉得不是数据,你为summaryResults控制器设置路由了吗?像router.get("/summary", summaryResults)如果有路由器,尝试从render方法发送虚拟数据,如果你能在浏览器上看到虚拟数据,那么问题来自POST请求的数据
    • 是的,我有一条路线,我知道它会触发该方法,因为控制台日志会返回输入的正确数据。在网络检查器中,我实际上可以看到我的页面返回了所有正确的数据。但是,无论我做什么,我所在的当前页面都不会刷新或走新路线。
    猜你喜欢
    • 2019-10-20
    • 2020-06-13
    • 2019-04-11
    • 2020-06-15
    • 2020-07-28
    • 2020-07-19
    • 2021-03-24
    • 2018-06-22
    • 2018-11-21
    相关资源
    最近更新 更多