Express.js分页点击页码时参数重复问题求助
解决分页时URL重复追加参数的问题
问题根源在于你使用的fullUrl包含了当前URL的所有参数(包括之前的perPage和page),每次点击页码都会在这个URL后重复追加分页参数,导致URL参数冗余。
解决方案:生成仅含筛选参数的基础URL
修改后端代码(Index.js):
过滤掉原始查询参数中的分页相关字段,生成只保留筛选条件的基础URL:let results = await db.collection("bookings").find(whereClause, { limit: perPage, skip: perPage * (Math.max(req.query.page - 1, 0) || 0) } ).toArray(); // 解析并过滤查询参数,移除分页相关的perPage和page const queryParams = new URLSearchParams(req.query); queryParams.delete('perPage'); queryParams.delete('page'); // 构建基础URL:协议+主机+路径+筛选参数 const baseUrl = `${req.protocol}://${req.get('host')}${req.path}` + (queryParams.toString() ? `?${queryParams.toString()}` : ''); return res.render('search', { bookings: results, pages: pages, perPage: perPage, baseUrl: baseUrl });修改分页模板代码:
使用新的baseUrl来拼接分页参数,同时判断基础URL是否已有查询参数,选择用?还是&拼接:<nav aria-label="Page navigation example"> <ul class="pagination flex-wrap"> <% for (var i = 1; i <= pages; i++) { %> <li class="page-item"> <a class="page-link" href="<%= baseUrl %><%= baseUrl.includes('?') ? '&' : '?' %>perPage=<%= perPage %>&page=<%= i %>"> <%= i %> </a> </li> <% } %> </ul> </nav>
这样处理后,每次点击页码时,URL只会保留筛选参数和当前的分页参数,不会出现重复追加的问题。
内容的提问来源于stack exchange,提问作者RWWW
相关产品推荐
相关产品推荐

