如何在链接中传递多个参数并在服务器端正确获取?
解决URL多参数传递与服务器端解析问题
你的问题出在URL参数的拼接格式错误上——URL里只能有一个?作为参数列表的起始标记,多个参数之间需要用&来分隔,而不是重复用?或者用+拼接。
正确的链接写法
把你的代码改成这样:
<a href="?page={{ page }}&filter={{ data.sort }}">{{ page }}</a>
为什么原来的写法不行?
你之前用了?page={{ page }}+?filter={{data.sort}},这里的+?filter会被浏览器当成page参数值的一部分,所以服务器端解析时,page的值就变成了2 ?filter=price-high,而不是单独的2。
多参数的扩展写法
如果需要传递更多参数,只需要继续用&连接即可,比如:
<a href="?page={{ page }}&filter={{ data.sort }}&limit={{ limit }}">{{ page }}</a>
生成的URL会是/products?page=2&filter=price-high&limit=10,服务器端的req.query会自动解析成:
{ page: '2', filter: 'price-high', limit: '10' }
服务器端获取参数
用Express框架的话,req.query会自动帮你解析URL中的查询参数,直接访问对应的键名就能拿到值,比如:
const page = req.query.page; const filter = req.query.filter; // 或者直接解构 const { page, filter } = req.query;
这样就能得到你想要的包含多个参数的对象了。
内容的提问来源于stack exchange,提问作者Juozas Rastenis
相关产品推荐
相关产品推荐

