javascript - 使用express在node.js中获取帖子后重定向

标签 javascript node.js express redirect fetch

我有 ejs 页面(/profile/addcalender),我正在通过使用 fetch 和 post 来从该页面获取数据。我可以在服务器端 post 方法中获取和处理数据,但无法在其之后重定向。

以下是ejs页面的相关部分:

<li><button class="contact100"  id='nextstp' style="width: 100%; height: 100px; font-size: larger; padding-bottom: 0px;"> <span>SCHEDULE</span></button></li>

这是连接到 ejs 以获取数据以及我使用 fetch 的 .js 文件的相关部分:

function moveon(){  //Collecting data in here // Bu fonksiyon da dataları toplaman lazım !!
 var mailler = mails; // ALL mails
 var Title = document.getElementById("title").value; // Meeting Title
 var desc = document.getElementById("description").value; // Meeting Description

 if(!Title){alert("Cannot Submit without title"); return;}
 if(!desc){alert("Description is mandatory"); return;}
 if(mails.length < 1){alert("You need AT LEAST one attendee"); return;}

 var stuff = {title: Title, decription: desc, mails:mailler}
 console.log(stuff);
 console.log(JSON.stringify(stuff));

 var stuff2 = {title : "alex", description: "de souza"};
 options = {
   method : 'POST',
   redirect: 'follow',
   body: JSON.stringify(stuff),
   headers: {
     'Content-Type': 'application/json'
   }
 };

 fetch('/profile/addcalender', options);

}

这是我用 express 发送邮政请求的地方:

  router.get('/addcalender', (req,res) => {
  //console.log(req.user);

   res.render('calendermeet',{user:req.user});
  })

  router.post('/addcalender', userController.postCalenderMeet);

这是我在用户 Controller 的服务器端处理数据的地方:

module.exports.postCalenderMeet = (req, res, next) => {
console.log("POST CALENDAR MEEEET")

async function main() {

    var userCalendars = [];

    for (email of req.body.mails) {
        await User.findOne({
            email: email
        }).then(user => {
            if (user) {
                //console.log(user.name);
                //console.log(user.calender);
                userCalendars.push(user.calender)
            }
        }).catch(err => console.log(err));
    }

    userCalendars.push(req.user.calender);

    console.log("1");
    console.log(userCalendars);
    console.log("2");

    res.redirect("/profile/calender");

    return userCalendars;

  }

  main();



 };

通常情况下,我从表单中获取发布请求,并在服务器端重定向工作。但是当我使用 fetch 时,它不会重定向,并且我停留在同一页面上。

最佳答案

重定向意味着“您所要求的内容可以在这里找到”。

这并不意味着“在此处导航主浏览器窗口”。

浏览器将自动遵循重定向并通过 fetch API 提供响应。

如果您想导航到新页面:不要使用fetch。它的全部要点是无需导航即可发出 HTTP 请求。

改用表单。

关于javascript - 使用express在node.js中获取帖子后重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61271663/

相关文章:

javascript - 如何动态设置快速服务器的端口?

javascript - passport.authenticate 回调未被执行

javascript - 如果尚未在 localStorage 中,如何将新对象推送到数组

javascript - 连接到组件

node.js - 使用 yeoman 生成角度应用程序时出错 : unhandled Template render error

windows - node, forever, coffee - 在 linux 上运行良好但在 windows 上运行不佳

javascript - express-jwt 无法从路由目录访问 req.user

javascript - Ajax调用相同的id

javascript - 在 jQuery 的 .each() 方法的每次迭代之间应用延迟

javascript - mongoose、express 和 node.js 中回调函数的参数