[英]Reload a page and reset URL
我正在從 mySQL 數據庫表中獲取項目列表,但是我在頁面上有一些過濾器,這些過濾器負責更改負責在查詢中存儲ORDER BY
和LIMIT
值的變量的值。
我這樣做的方法是通過 JavaScript 更改location.href
,PHP 變量使用$_GET[]
獲取數據。 當$_GET[]
未設置時,例如在第一次訪問頁面時,會向查詢發送一些模式值。
function itensPorPag() {
let qtde = document.getElementById('select_itens').value;
let order = document.getElementById('order_page').value;
let offset = 0;
let url = 'adm_conta.php?prod_qtde='+qtde+'&offset='+offset;
location.href = url;
}
原始網址:
adm_conta.php
過濾后的網址:
adm_conta.php?prod_qtde=4&offset=0
設置變量:
if (isset($_GET['prod_qtde'])) {
$limit = $_GET['prod_qtde'];
$offset = $_GET['offset'];
} else {
$limit = '3';
$offset = '0';
}
到現在為止還挺好。 當我需要重新加載頁面而不應用任何過濾器時,問題就開始了,例如按F5
。 這是因為如果我只是重新加載頁面,變量將從 URL 接收值,因為$_GET[]
已設置。
過濾后的網址:
adm_conta.php?prod_qtde=4&offset=0
重新加載頁面后的 URL(它不會改變,因為它接收到相同的值):
adm_conta.php?prod_qtde=4&offset=0
我為此找到了解決方案,但缺少一點。 我在 JavaScript 中使用keyup event
來更改 URL,當頁面通過按F5
、 CTRL + R
和CTRL + F5
重新加載時:
document.onkeyup = checkKey;
function checkKey(e) {
if (e.keyCode == 82 && e.ctrlKey || e.keyCode == 116 && e.ctrlKey || e.keyCode == 116) {
location.href = 'adm_conta.php';
}
}
它運作良好。 但是我還需要在通過單擊重新加載按鈕重新加載頁面時能夠執行相同的操作,這就是所缺少的。
這個按鈕:
我曾嘗試使用window.onbeforeunload
,但它會在頁面重新加載時觸發,這會給我的應用程序帶來什么麻煩,因為在應用過濾器后重新加載頁面,在這種情況下我無法重置 URL。
我怎么能那樣做?
我願意接受建議,即使我必須改變我這樣做的方式。
只需使用 PHP 函數header()
header('Location: http://www.example.com/');
所以在設置你的變量之后
if (isset($_GET['prod_qtde'])) {
$limit = $_GET['prod_qtde'];
$offset = $_GET['offset'];
} else {
$limit = '3';
$offset = '0';
}
並使用它們讓您知道什么只是發送標頭以將用戶瀏覽器重定向到同一位置但沒有 url 查詢。
用法示例:
header("刷新:0");
=> 刷新同一頁面(也許是最好的解決方案)
header("刷新:0; url=adm_conta.php");
=> 使用重定向刷新
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.