所以我在页面上有一个显示分页结果的过滤器表单。目前,当您使用获取请求应用过滤器设置时,一切正常,但当您尝试切换页面时,它会重置。我曾想过使用如下脚本将 URL 从一个页面传递到另一个页面。这会复制 url,但实际上不会更改页面,只是复制字符串。您可以在下面的网址中看到,该网址确实更改了页面,但无论网址如何,实际网页仍保留在第一页上。我正在使用 Django 和 Django 过滤器。也许有更好的 jQuery 解决方案,有什么建议吗?
脚本
document.querySelectorAll('.fqs')
.forEach((el) => el.attributes.href.value += window.location.search);
网址
没有脚本:
/relations/?createdBy=&occursIn=&createdAfter=&createdBefore=&terminal_nodes=&project=1
使用脚本:
/relations/?page=2?createdBy=&occursIn=&createdAfter=&createdBefore=&terminal_nodes=&project=1
下一页链接
<a class="fqs" href="?page={{ relations.next_page_number }}">Next »</a>
按上一个按钮时的网址
?page=1&page=2&createdBy=&occursIn=&createdAfter=&createdBefore=&terminal_nodes=&project=1
最佳答案
如果我理解正确,您将添加分页服务器端 ?page={{...}}
并通过 js 添加现有的 url 参数。
生成的网址中有两个 ?
,这可能就是链接无法为您提供正确页面的原因。
location.search 包含 ?
,因此要将其添加到您的 ?page=x 中,您必须将 ?
替换为 &
:
document.querySelectorAll('.fqs')
.forEach((el) => el.attributes.href.value += window.location.search.replace("?", "&"));
编辑:如果这有效,它可能会停止在下一页上工作,因为 location.search 将包含 page=x
给出重复的页面查询参数。
要从 location.search
中过滤掉页面参数,您可以执行以下操作:
document.querySelectorAll('.fqs')
.forEach((el) => {
var params = window.location.search.replace("?", "&").split("&");
params = params.filter((v) => v.indexOf("page") == -1).join("&");
el.attributes.href.value += params;
});
顺便说一句,请注意,箭头功能在 IE11 等旧版浏览器中不起作用。
关于javascript - 将 URL 参数从一个页面传递到另一页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46105961/