Infinite Ajax Scroll v3.0.0-beta6 追加随机URL参数引发404错误求助
jQuery-IAS v3.0.0-beta6 自动追加随机数字参数导致404问题排查
问题现象
- 使用jQuery-IAS(InfiniteAjaxScroll)v3.0.0-beta6版本时,组件发起的分页请求会在原URL末尾自动追加一串时间格式的随机数字
- 例如原本目标请求为
https://www.y8games.center/?page=2,实际发出的请求地址会变成https://www.y8games.center/?page=2&1612427293001,这类无参数键名的裸查询值会直接触发服务端路由校验,返回404错误 - 查阅该版本官方发布说明未提及相关默认行为,无直接配置指引可参考
复现代码参考
分页DOM结构
<ul class="pagination pagination-sm justify-content-center pagination-ias" id="pagination"> <li id="page-item-1" class="page-item active"> <a class="page-link" href="https://www.y8games.center">1</a> </li> <li id="page-item-2" class="page-item next"> <a class="page-link" href="https://www.y8games.center/?page=2">2</a> </li> <li id="page-item-3" class="page-item "> <a class="page-link" href="https://www.y8games.center/?page=3">3</a> </li> <li id="page-item-4" class="page-item "> <a class="page-link" href="https://www.y8games.center/?page=4">4</a> </li> </ul>
组件初始化代码
let ias = new InfiniteAjaxScroll('#catalog', { item: '.game-item:not(.game-item-new)', next: '.next a', pagination: '#pagination', spinner: { element: '.ias-spinner', delay: 500, }, });
问题原因
v3.0.0-beta6属于测试预览版本,组件默认开启了缓存破除机制:为了避免浏览器缓存分页请求结果,组件会自动在请求URL末尾拼接当前时间戳作为参数;但该测试版本的参数拼接逻辑存在缺陷——没有给时间戳补充对应的参数键名,直接将时间戳作为裸值追加到查询字符串末尾,且该默认行为未同步到当时的公开文档中。
解决方法
在组件初始化配置中新增cache: false配置项,直接关闭自动追加时间戳的逻辑即可,修改后的初始化代码如下:
let ias = new InfiniteAjaxScroll('#catalog', { item: '.game-item:not(.game-item-new)', next: '.next a', pagination: '#pagination', // 关闭组件默认的自动追加时间戳的缓存破除逻辑 cache: false, spinner: { element: '.ias-spinner', delay: 500, }, });
补充说明:如果需要保留缓存破除的能力,可以通过自定义请求拦截逻辑,手动为分页请求补充带键名的时间戳参数(例如
_t=当前时间戳),避免裸参数触发服务端路由校验错误。
内容的提问来源于stack exchange,提问作者Mahdi
相关产品推荐
相关产品推荐

