使用ajaxComplete时忽略Query String,如何捕获/cart.js请求?
解决ajaxComplete匹配带Query String的/cart.js问题
当前代码通过严格相等判断settings.url === "/cart.js",但实际请求的URL会带有随机Query参数(比如/cart.js?_=1324346569),导致匹配失败。可以用以下几种方法忽略Query参数,只匹配路径部分:
方法一:使用字符串
startsWith方法
直接检查URL是否以目标路径开头,简单高效:$(document).ajaxComplete(function(event, xhr, settings) { if (settings.url.startsWith("/cart.js")) { console.log('捕获到cart.js请求(忽略Query参数)'); } });方法二:使用URL对象解析路径
借助浏览器原生的URL对象解析URL,提取路径部分进行匹配,逻辑更严谨:$(document).ajaxComplete(function(event, xhr, settings) { const urlObj = new URL(settings.url, window.location.origin); if (urlObj.pathname === "/cart.js") { console.log('捕获到cart.js请求(忽略Query参数)'); } });方法三:使用正则表达式匹配
通过正则表达式匹配以/cart.js开头的URL,支持带或不带Query参数的情况:$(document).ajaxComplete(function(event, xhr, settings) { if (/^\/cart\.js(\?.*)?$/.test(settings.url)) { console.log('捕获到cart.js请求(忽略Query参数)'); } });
内容的提问来源于stack exchange,提问作者Joulton
相关产品推荐
相关产品推荐

