我有 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/