簡體   English   中英

將網址參數從一頁傳遞到另一頁

[英]Passing Url params from one page to another

因此,我在頁面上有一個顯示分頁結果的過濾器表單。 當前,當您使用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 &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,而是使用python。 我加了

gt = request.GET.copy()
if 'page' in gt:
    del gt['page']

    context = {
        'paginator': paginator,
        'relations': relations,
        'params': urlencode(gt),
        'filter': filtered,
        }

在我看來。 它會復制參數,然后刪除參數匹配頁面並在上下文中進行編碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM