Tôi đã viết một chức năng sẽ tải lại trang mà không cần gửi bài và cũng sẽ hoạt động với băm.
Tôi làm điều này bằng cách thêm/sửa đổi tham số GET trong URL được gọi là reload
bằng cách cập nhật giá trị của nó bằng dấu thời gian hiện tại bằng ms.
var reload = function() {
var regex = new RegExp("([?;&])reload[^&;]*[;&]?");
var query = window.location.href.split('#')[0].replace(regex, "$1").replace(/&$/, '');
window.location.href =
(window.location.href.indexOf('?') < 0 ? "?" : query + (query.slice(-1) != "?" ? "&" : ""))
+ "reload=" + new Date().getTime() + window.location.hash;
};
Hãy nhớ, nếu bạn muốn kích hoạt chức năng này trong một thuộc tính href, thực hiện nó theo cách này: href="javascript:reload();void 0;"
để làm cho nó hoạt động, thành công.
Nhược điểm của giải pháp của tôi là nó sẽ thay đổi URL, do đó, "tải lại" không phải là tải lại thực, thay vào đó là tải với truy vấn khác. Tuy nhiên, nó có thể phù hợp với nhu cầu của bạn như nó cho tôi.
gửi lại POST (tải lại là gì) sẽ luôn hiển thị cảnh báo đó. Bạn có thể làm một POST thay vì tải lại, mặc dù điều đó sẽ lấp đầy lịch sử trình duyệt của người dùng nếu bạn làm điều đó quá thường xuyên và họ vẫn sẽ nhận được cảnh báo nếu họ nhấn nút quay lại. –
Nhân bản: http://stackoverflow.com/questions/1073593/php-reload-page-without-posting-data/1073732#1073732 – Quentin