为什么“?an=a”会添加到我的 URL 的 GET 后面?

Why does "?a=a" get added to the back of my URL on GET?

我使用带有 action="/sact/${searchp}/" 的 post GET 请求来提交用户搜索查询。

var searchp = search.querySelector("input.search-input").value;
// returns the normal value

document.body.innerHTML += `<form id="jsForm" action="/sact/${search}/" method="GET"><input type="hidden" name="a" value="a"></form>`;
document.getElementById("jsForm").submit();

这里重定向:

router.get('/sact/:where', async (req, res, next) => {
  res.render('search');
});

我不明白为什么每次提交时都会将 /?a=a 添加到 URL 的后面。我该如何删除它?

当您 document.getElementById("jsForm").submit(); 将 URL 上的表单作为查询参数发送时,因为您正在使用 method="GET"

a=a 来自此字段 <input type="hidden" name="a" value="a"> 在 HTML 上隐藏,但仍会在 URL

上发送

如果你想“隐藏”你可以使用 method="POST" 将不会在 URL

上可见