【问题标题】:Can't redirect using res.redirect() method express + NodeJS [duplicate]无法使用 res.redirect() 方法 express + NodeJS 重定向 [重复]
【发布时间】:2018-10-09 21:43:06
【问题描述】:

大家好。 我正在 nodeJs 中构建我的第一个应用程序。直到现在一切都很顺利。我在尝试使用 NodeJS 应用程序中的服务器端代码进行重定向时遇到问题,不会引发任何错误,但在浏览器上它会停留在同一页面上,并且不会从索引页面重定向到聊天室页面。

索引.js

var express = require('express');
var router = express.Router();
var obj = require('../bin/www');
var db = require('../databaseModels');



/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express Chat' });
});




//here we will save the username of the New user
router.post("/setUserName", async function(req,res) {
try{
    var newUser = new db.Users(req.body);
    await newUser.save()
    //Emit the event that a new user has joined the chat
    obj.io.emit("newUserJoined", req.body)
    return res.redirect(301,"http://192.168.34.54:4747/chatroom");
}
catch(error) {
    res.sendStatus(500);
    console.log(error);
}
})

module.exports = router;

chatroom.js

var express = require('express');
var router = express.Router();
var obj = require('../bin/www');
var db = require('../databaseModels');

/* GET users listing. */
router.get('/', function(req, res, next) {
    res.render('chatroom', {title: 'Welcome to Chat Room'});
});


module.exports = router;

感谢任何形式的回应。谢谢你。

【问题讨论】:

  • 您面临的问题是什么?你试过删除你的ip吗?只放/chatroom
  • 问题是当我在按钮上调用 setUserName 方法表单索引页面时,单击它将用户名保存在数据库中,但它不会重定向到聊天室页面。不,我没有那样尝试@BasilBattikhi
  • 您是否使用 AJAX/XMLHttpRequest/fetch 调用 POST /setUserName
  • $.post('url') 方法。但我也试过 $.get('ulr') 。仍然不工作@robertklep

标签: node.js express


【解决方案1】:

使用 bin/www 中的“聊天室”路由器,就像使用“索引”路由器一样。

app.use('/chatroom',chatroom);

在索引路由器中,调用聊天室路由器时使用相对路径。

return res.redirect(301,"/chatroom");

【讨论】:

  • 我已经这样做了 app.use('/', indexRouter); app.use('/chatroom', chatroomRouter); 在 app.js 中添加了这些行仍然无法正常工作
  • 我没有收到任何错误。调试器打印这个。 'GET /setUserName/gjnhgjhjjytjy 301 8.911 ms - 43' 'GET /chatroom 304 4.263 ms - -'
  • 如果你使用 jQuery ,那么不要从 API 重定向。
  • 只需从 /index 和 jQuery 传递 {success : true/false},当你成功时重定向到 /dashboard: true。
  • 感谢@Ratish,我想我找到了原因。我正在使用 $.post() 方法,所以我认为我必须发送 url 作为响应并从前端重定向它吗?
猜你喜欢
  • 1970-01-01
  • 2020-08-22
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 2021-06-08
  • 2019-01-02
  • 1970-01-01
  • 2018-02-11
相关资源
最近更新 更多