所以我在页面上有一个显示分页结果的过滤器表单。目前,当您使用get请求应用过滤器设置时,一切正常,但是当您尝试切换页面时,它会重置。我曾想过使用下面的脚本将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
答案 0 :(得分: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等传统浏览器中不起作用。
答案 1 :(得分:0)
为了实现这一点,我决定不使用任何javascript并使用python代替。我添加了
/
到我看来。它复制params,然后删除param匹配页面并在上下文中进行编码。