【发布时间】:2020-03-19 12:49:00
【问题描述】:
我从 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。
我该怎么做?
我不接受建议,即使我必须改变我这样做的方式。
【问题讨论】:
标签: javascript php url events reload