2011-08-05 43 views
8

Tôi muốn thêm một số thông số GET vào URL trang. Tôi đang tải nội dung như thế này:Thay đổi url theo yêu cầu ajax

$("#content").load("shop.pl #content .product", $.param({categ:1)})); 

Làm cách nào để thay đổi URL có cùng thông số ?categ=1?

+0

Không chắc bạn có thể làm điều đó mà không thay đổi trang. – Nalum

Trả lời

11

Bạn có thể sử dụng HTML5 pushState API để đạt được điều này. Tuy nhiên, chỉ có các trình duyệt mới nhất hỗ trợ nó và IE thậm chí không hỗ trợ nó trong IE9. Không có cách nào để làm điều này trước. Tuy nhiên, có một quy ước rằng bạn sẽ sử dụng location.hash để chỉ ra một trạng thái của trang đã được sửa đổi bởi một yêu cầu ajax. Để biết thêm thông tin về cách sử dụng băm url để cho biết trạng thái trên trang của bạn, bạn có thể muốn xem this.

Có thư viện, History.js, có thể được sử dụng để chuyển sang pushState. API của nó rất gần với API pushState, nhưng nó sẽ minh bạch cung cấp một dự phòng băm nhỏ nếu trình duyệt không hỗ trợ pushState.

+1

+1 cho cùng một ý tưởng như tôi - chỉ nhanh hơn (tôi đã chỉnh sửa câu hỏi!) :-) – andyb

+0

10x Tôi sẽ cố gắng history.js – bliof

+0

liên kết API pushState bị hỏng – michaelsnowden

0

Bạn có thể thử thao tác URL hiển thị bằng cách sử dụng phương thức pushState() (xem documentation, bạn có thể muốn đọc thêm về onpopstate event).

Bằng cách đó bạn có thể thay đổi URL theo cách bạn muốn.

Một số cuộc biểu tình về cách thay đổi URL mà không cần nạp lại trang là đây: http://html5demos.com/history

3

nội dung của bạn đang được nạp thông qua AJAX, vì vậy có lẽ URL nên có nó băm mảnh sửa đổi - xem http://code.google.com/web/ajaxcrawling/docs/specification.html

+2

OP muốn thay đổi tham số GET của trang web hiện tại, không phần băm của URL, tôi tin. – Tadeck

+1

Có, nhưng điều này là không thể trong trình duyệt không hỗ trợ API pushState HTML5, tất cả là cơ bản tất cả trừ các trình duyệt mới nhất. Manipulationg mảnh băm của một URL là * theo quy ước * cách anh ta đi để chỉ ra và khôi phục trạng thái thay đổi của một trang web. –

Các vấn đề liên quan