javascript - 将 URL 参数从一个页面传递到另一页面

标签 javascript python django url

所以我在页面上有一个显示分页结果的过滤器表单。目前,当您使用获取请求应用过滤器设置时,一切正常,但当您尝试切换页面时,它会重置。我曾想过使用如下脚本将 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 &raquo;</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/

相关文章:

尝试解析 JSON 推文时出现 Python 编码问题

python - 使用 ConfigParser 替换已存在的字符串时出现问题

python - Django检查相关对象是否存在错误: RelatedObjectDoesNotExist

django -/in urlpatterns django

javascript - 如何使用 jquery 禁用页面上的所有链接和输入按钮

javascript - 如何将项目添加到 ng-repeat 列表并停止通过数据绑定(bind)更改列表项目

javascript - Js 科尔斯。否 'Access-Control-Allow-Origin'

javascript - 从带有子字段的平面列表构造层次结构树并保留子顺序?

python - Scrapy,从第二组链接中抓取页面

python - 通过Django Rest中的ForeignKey访问另一个模型中的字段