gpt4 book ai didi

javascript - req.params.id 返回多个值?

转载 作者:行者123 更新时间:2023-12-02 14:05:55 25 4
gpt4 key购买 nike

我有一个表单,提交后会重定向到我的聊天应用程序中的“/room/roomnum”。重定向时,将显示 chat.html。但在 app.get 内部,我有 room/:id,并且“id”应该具有在表单中输入的房间号的值。

   app.post("/user", urlencodedParser, function(req,res) {
res.redirect("/room/" + req.body.roomnum);
});
app.get("/room/:id", function(req,res) {
res.sendFile(__dirname + "/chat.html");
console.log(req.params.id);
});

但是,我在控制台中获取多个值 -

控制台输出 -

roomnum
style.css
script.js

当我 console.log(req.params.id) 时,我不应该只获取房间号吗?

更新 - 应用程序的主要部分

//routing
app.get("/", function(req, res) {
res.render("login", {rooms: rooms});
});
app.post("/user", urlencodedParser, function(req,res) {
res.redirect("/room/" + req.body.roomnum);
});
app.get("/room/:id", function(req,res) {
res.sendFile(__dirname + "/chat.html");
//console.log(req.params.id);
});
app.use(express.static("static_files"));

//handling socket connection
io.on("connection", function(socket) {
//console.log(socket.handshake.address + " joined ");
});

最佳答案

我认为这里有两个问题:

  • chat.html ,您正在使用相对路径(没有前导 / )来加载 style.cssscript.js ;
  • 您声明静态中间件太晚了。

由于这些问题,请求 style.css从里面chat.html被“翻译”为/room/style.css ,它匹配 /room/:id路线。因此,它也永远不会命中静态中间件(当路由匹配并处理请求时,任何后续的路由处理程序都不会被调用)。

所以:

  • 使用资源的绝对路径:/style.css (或 /css/style.css 或其他任何内容,具体取决于您如何构建 static_files 目录)
  • 将静态中间件移至路由之前:

    app.use(express.static("static_files"));
    //routing
    app.get("/", function(req, res) { ... }).

关于javascript - req.params.id 返回多个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40036964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com