11 Xử lý “Back” cho AJAX

(Post 14/09/2007) AJAX là kỹ thuật thời thượng, tạo nên thế hệ ứng dụng web đáp ứng nhanh, tiết kiệm nhiều thời gian cho người dùng khi lướt web. Tuy nhiên, nếu là người viết ứng dụng web, chắc hẳn bạn cũng đã biết một số khuyết điểm của các ứng dụng trên nền AJAX. Một trong số đó là tính năng Back. Khi bạn xem các trang của một website dùng kỹ thuật AJAX, nếu nhấn nút Back trên thanh công cụ của trình duyệt thì bạn sẽ bị “đá văng” khỏi website thay vì được đưa về trang trước đó. Bài viết này trình bày một trong số những cách khắc phục khuyết điểm trên.

Ta xét một website, trang web chính có 3 liên kết đến 3 trang nội dung. Đây là liên kết giả vì không dùng tag mà dùng XMLHttpRequest để lấy nội dung từ 3 file t1.xml, t2.xml, t3.xml đưa vào trang chính, làm cho người dùng tưởng mình được đưa tới 3 trang web khác nhau của website.

Tạo 3 trang nội dung như sau:

t1.xml

Day la noi dung cua trang so 1.

t2.xml

Day la noi dung cua trang so 2.

t3.xml

Day la noi dung cua trang so 3.

Đặt 3 file xml vào thư mục gốc của website (giả sử là http://localhost/).

Tiếp theo, tạo trang web chính index.html nội dung như sau:

Xem trang 1

 

Xem trang 2

 

Xem trang 3

 

 

Trang web chính gồm 3 liên kết là 3 phần tử, và một phần tửcó nhiệm vụ chứa nội dung của 3 trang. Để lấy dữ liệu và đưa ra trang chính, ta viết hàm xreq() và ghi(). Bổ sung đoạn mã sau vào file index.html:

Gắn hàm xreq() và hàm ghi() vào sự kiện onclick của 3

liên kết.

Xem trang 1

 

Xem trang 2

 

Xem trang 3

 

Truy cập vào địa chỉ http://localhost/ (hoặc địa chỉ web trên máy chủ của bạn), sau đó nhấn vào các liên kết Xem trang 1… Bạn sẽ thấy nội dung trang web thay đổi tương ứng.

Bây giờ thử nhấn nút Back của trình duyệt, bạn sẽ bị đưa ra khỏi website ngay. Đó chính là điều ta sẽ giải quyết. Ý tưởng là “lừa” trình duyệt, hướng nó về một trang web khác, để khi nhấn Back hay Forward, trình duyệt sẽ thực hiện lệnh đó trên trang web này chứ không phải là trang web chính.

Để làm điều này, đầu tiên bạn hãy chèn đoạn mã sau vào trang chính:

Sau đó, tạo một trang phụ là f.htm trong thư mục gốc với nội dung như sau:

Bây giờ, bạn thêm hàm xu_li() với nhiệm vụ xử lí kết quả trả về của hàm xreq(), và hàm url() với nhiệm vụ thay đổi địa chỉ của

Mọi việc đã hoàn tất! Hãy truy cập website vừa tạo để xem kết quả.

Hãy thử nhấn các liên kết Xem trang 1, Xem trang 2, Xem trang 3, sau đó nhấn nút Back, bạn sẽ thấy bây giờ mình không bị “đá” ra khỏi website nữa, mà được đưa về các “trang” trước vừa xem.

Trên đây là một cách khắc phục khuyết điểm nút Back của ứng dụng AJAX, bạn có thể phát triển thêm, hoặc sửa đổi để phù hợp với ứng dụng của mình.

Phạm Quang Dũng
(theo PC World VN)

FPT Aptech – Hệ Thống Đào Tạo Lập Trình Viên Quốc Tế

FPT Aptech trực thuộc Tổ chức Giáo dục FPT có hơn 25 năm kinh nghiệm đào tạo lập trình viên quốc tế tại Việt Nam, và luôn là sự lựa chọn ưu tiên của các sinh viên và nhà tuyển dụng.
0981578920
icons8-exercise-96