带有搜索栏的 EJS 表单 GET 请求未按预期工作

EJS Form GET Request with a search bar not working as expected

我正在尝试制作一个当前重定向到“/”的静态搜索栏。这只是目前的情况。但主要问题是无论输入是什么,输出总是'h'

我正在使用 nodejsejs

.

request.ejs

      <form action="/request/search" method="GET">
            <input
              type="text"
              name="search"
              id="search"
              placeholder="Search for Books"
              class="search"
            />
            <button class="search-btn" type="submit">Submit</button>
        <div class="imae"></div>
      </form>

server.js


app.get('/request/search?:search', (req, res) => {
  console.log(req.params);
  res.redirect('/');
});

输出

{ search: 'h' }

我做错了什么,请帮助

您没有指定,但您似乎使用的是 express。

使用 req.query 对象而不是 req.params,因为参数用于带有路由的 URL,而不是查询参数。话虽如此,您的请求 URL 匹配中不需要 :search。我无法解释为什么它收到 'h' 的值,但这应该可以解决您的问题。

您需要在 Method

形式中使用 POST 而不是 GET
<HTML>
    <form action="/request/search" method="POST">
        <input
          type="text"
          name="search"
          id="search"
          placeholder="Search for Books"
          class="search"
        />
        <button class="search-btn" type="submit">Submit</button>
  </form>

在 js 端。 app.get('/request/search', (req, res) => { console.log(req.body); res.redirect('/'); });