Nếu tôi thay đổi giá trị băm như sau: window.location.hash = "main/0/sub/1/na/false";
. Địa chỉ trong trình duyệt thay đổi thành http://mysite.com/#main/0/sub/1/na/false
. Chức năng onhashchange của Trang cháy và mọi thứ hoạt động như mong muốn.Sử dụng dấu gạch chéo trong window.location.hash
Tuy nhiên, trong Firebug tôi có thể thấy rằng tôi cũng đang gửi yêu cầu tới: http://mysite.com/main/0/sub/1/na/false
... URL không có hàm băm, dẫn đến 404 im lặng trong bảng điều khiển.
Khi tôi gỡ lỗi, tôi thấy rằng điều đó xảy ra tại điểm window.location.hash
.
Nhưng, nếu tôi thay đổi mã băm như vậy: window.location.hash = "main=0&sub=1&na=false";
không yêu cầu bổ sung nào được gửi.
Tại sao yêu cầu bổ sung được gửi trong ví dụ đầu tiên?
UPDATE: tôi nhận thấy nó sẽ gửi các yêu cầu sau window.location.hash
và trước (trong?) $(window).bind('hashchange')
. Ví dụ nếu tôi có ...
window.location.hash = 'main/0/sub/1/na/false'; // Breakpoint 1 in Firebug
$(window).bind('hashchange', function(e) {
e.preventDefault(); // Breakpoint 2 in Firebug
e.stopPropagation();
});
Khi dừng tại điểm ngắt 1, không yêu cầu nào được gửi. Khi nó dừng lại ở điểm ngắt 2, yêu cầu đã được gửi đi.
Tôi có thể thấy trong Apache Tomcat rằng yêu cầu đang được gửi đi.
Tôi sẽ thêm rằng tôi đã jQuery và jQuery Mobile cắm vào
UPDATE 2:. Loại bỏ jQuery Mobile giải quyết vấn đề. Tuy nhiên, tôi cần nó:/
CẬP NHẬT 3
Nếu có ai quan tâm: Với jQuery Mobile: http://jsfiddle.net/pioSko/hz5PU/3/
Without jQuery Mobile: http://jsfiddle.net/pioSko/hz5PU/4/
mở Firebug hoặc ứng dụng gỡ lỗi khác và kiểm tra các liên kết.
Yêu cầu có thực sự nhấn máy chủ của bạn không? Phiên bản Firebug, Firefox nào? Tôi không nhìn thấy nó trên một cái cũ thực sự ở đây, cũng không phải trên một Chrome tươi, vì vậy tôi đoán đây có thể là một lỗi ở đâu đó. –
Không thể sao chép với FF 12.0 và 13.0.1. Đã thử 'window.location.hash =" main/0/sub/1/na/false ";' trong giao diện điều khiển Firebug trên một trang ngẫu nhiên, không có yêu cầu mạng nào được quan sát. – lanzz
Tôi đã tạo một trang giả và trong đó tôi không thể tạo lại lỗi này. Vì vậy, nó phải được sâu hơn trong mã. – pioSko