AJAX là gì?
AJAX,
viết tắt từ Asynchronous JavaScript and XML (JavaScript và XML không
đồng bộ), là bộ công cụ cho phép tăng tốc độ ứng dụng web bằng cách cắt
nhỏ dữ liệu và chỉ hiển thị những gì cần thiết, thay vì tải đi tải lại
toàn bộ trang web. AJAX không phải một công nghệ đơn lẻ mà là sự kết
hợp một nhóm công nghệ với nhau. Trong đó, HTML và CSS đóng vai hiển
thị dữ liệu, mô hình DOM trình bày thông tin động, đối tượng
XMLHttpRequest trao đổi dữ liệu không đồng bộ với máy chủ web, còn XML
là định dạng chủ yếu cho dữ liệu truyền. Đây đều là công nghệ sẵn có
nhưng Javacript đã lắp ráp chúng lại để thực hiện những "sứ mệnh" đáng
khâm phục.
Hầu hết các câu chuyện về nguồn gốc của AJAX được
bắt đầu từ khi Microsoft phát triển công nghệ Remote Scripting vào năm
1998. Tuy nhiên, phương pháp tải không đồng bộ nội dung trên một trang
web đã xuất hiện trong thành tố IFRAME của Internet Explorer 3 (1996)
và thành tố LAYER của Netscape 4.0 năm 1997. Khi giới thiệu Internet
Explorer 4.0, Microsoft đã sử dụng mô hình đối tượng tài liệu DOM khác
biệt. Đến năm 2000, Netscape hoàn toàn đánh mất thị trường trình duyệt
vào tay hãng phần mềm của Bill Gates và thành tố LAYER cũng không còn
được các chuyên gia phát triển web chú ý tới.
Phải vài năm
sau, AJAX mới lại lôi kéo được sự quan tâm của giới công nghệ và trở
thành công cụ cải tiến giao diện người dùng cho ứng dụng web. Thuật ngữ
này cũng chỉ mới xuất hiện cách đây 1 năm (tháng 2/2005) trong bài viết
nổi tiếng của Jesse James Garrett trên trang Adaptive Path. Từ đó, AJAX
trở thành trung tâm trong mọi câu chuyện liên quan đến thế hệ Web 2.0.
AJAX hoạt động như thế nào?

Ứng dụng web truyền thống (trái) và ứng dụng AJAX. (Adaptive Path)
Từ
lâu, mọi người đã tưởng tượng ứng dụng máy tính rồi sẽ được lưu và chạy
hoàn toàn trên web thay vì nằm bó buộc trong ổ cứng. Dù vậy, viễn cảnh
đó vẫn chưa thể xảy ra do ứng dụng web bị hạn chế bởi nguyên lý rằng
tất cả các thao tác phải được thực hiện thông qua HTTP (HyperText
Transfer Protocol - Giao thức truyền tải qua siêu liên kết). Những hoạt
động của người sử dụng trên trang web sẽ tạo ra một yêu cầu HTTP tới
server. Máy chủ thực hiện một số khâu xử lý như lấy lại dữ liệu, tính
toán, kiểm tra sự hợp lệ của thông tin, sửa đổi bộ nhớ, sau đó gửi lại
một trang HTML hoàn chỉnh tới máy khách. Về mặt kỹ thuật, phương pháp
này nghe có vẻ hợp lý nhưng cũng khá bất tiện và mất thời gian, bởi khi
server đang thực hiện vai trò của nó thì người dùng sẽ làm gì? Tất
nhiên là chờ đợi.
Để khắc phục hạn chế trên, các chuyên gia
phát triển giới thiệu hình thức trung gian - cơ chế xử lý AJAX - giữa
máy khách và máy chủ. Điều này giống như việc tăng thêm một lớp giữa
cho ứng dụng để giảm quá trình "đi lại" của thông tin và giảm thời gian
phản ứng. Thay vì tải lại (refresh) toàn bộ một trang, nó chỉ nạp những
thông tin được thay đổi, còn giữ nguyên các phần khác. Vì thế, khi
duyệt một trang hỗ trợ AJAX, người sử dụng không bao giờ nhìn thấy một
cửa sổ trắng (blank) và biểu tượng đồng hồ cát - dấu hiệu cho thấy máy
chủ đang thực hiện nhiệm vụ. Ví dụ, trong một website ảnh, với ứng dụng
truyền thống, toàn bộ trang chứa các ảnh sẽ phải mở lại từ đầu nếu có
một thay đổi nào đó trên trang. Còn khi áp dụng AJAX, DHTML chỉ thay
thế đoạn tiêu đề và phần vừa chỉnh sửa, do vậy tạo nên các giao dịch
trơn tru, nhanh chóng.

Tương tác đồng bộ trong ứng dụng web truyền thống (trên) và
dị bộ trong ứng dụng AJAX. (Adaptive Path)
"Mọi
thao tác của người sử dụng sẽ gửi lệnh JavaScript tới bộ xử lý AJAX,
thay vì tạo ra một yêu cầu HTTP (HTTP request) và truy vấn tới máy
chủ", Jesse James Garrett đã ghi trong bài viết đầu tiên định nghĩa về
thuật ngữ này. "Nếu cần gì từ server, như tải về bổ sung mã giao diện
hay nhận dữ liệu mới, AJAX sẽ truyền yêu cầu tới máy chủ một cách không
đồng bộ, thông thường sử dụng XML, mà không làm gián đoạn sự tương tác
của người dùng với ứng dụng web".
Các ứng dụng AJAX phổ biến
Google
Suggest hiển thị các thuật ngữ gợi ý gần như ngay lập tức khi người sử
dụng chưa gõ xong từ khóa. Còn với Google Maps, mọi người có thể theo
dõi những thay đổi, xê dịch, kéo thả bản đồ như trên môi trường
desktop. Google Suggest và Google Maps là hai ví dụ nổi bật về phương
pháp ứng dụng web thế hệ mới. Hãng dịch vụ tìm kiếm hàng đầu thế giới
đã đầu tư rất nhiều vào việc phát triển AJAX. Hầu như mọi chương trình
họ giới thiệu gần đây, từ Orkut, Gmail đến phiên bản thử nghiệm Google
Groups, đều là những ứng dụng AJAX.
Nhiều công ty khác cũng
đang nối gót xu thế này như trang chia sẻ ảnh Flickr (hiện thuộc Yahoo)
hay công cụ tìm kiếm A9.com của Amazon. Yahoo dự định trong vài tuần
tới sẽ ra mắt bản Yahoo Mail Beta 1 sử dụng AJAX trên toàn thế giới
(đang được thử nghiệm giới hạn). Hòm thư mới sẽ được trang bị thêm
nhiều tính năng thuộc Web 2.0 như RSS, chế độ xem thư trước
(preview)... Microsoft cũng đang triển khai chương trình Windows Live
Mail và Windows Live Messenger hỗ trợ AJAX.
Những dự án trên
cho thấy AJAX không phải là một công nghệ quá xa xôi mà đang hiện diện
ngay trong thế giới thực, từ mô hình rất đơn giản như Google Suggest
đến tinh vi và phức tạp như Google Maps.
Thách thức lớn nhất
khi tạo ứng dụng AJAX không nằm ở khâu kỹ thuật bởi những thành phần
của nó đã xuất hiện từ lâu, hoạt động ổn định và được hiểu người biết
đến. Vấn đề ở đây chỉ là "các chuyên gia thiết kế cần quên đi những
giới hạn của web, bắt đầu nghĩ rộng hơn, sâu hơn về khả năng của công
nghệ và sáng tạo nó theo cách riêng của mỗi người", Alexei White, Giám
đốc sản xuất của công ty eBusiness (Mỹ), nhận xét. "AJAX sẽ làm mất dần
ảnh hưởng của Microsoft trên thị trường. Tuy chưa thể lấn át hoàn toàn,
nó sẽ mang lại những tính năng thay thế cho hầu hết các sản phẩn như
Office".
Những nhược điểm của AJAX
AJAX
có thể góp phần tạo nên một thế hệ mới cho ứng dụng web (như colr.org
hay backpackit.com). Tuy nhiên, nó cũng là một công nghệ "nguy hiểm"
khi gây ra không ít rắc rối về giao diện người dùng. Chẳng hạn, phím
"Back" (trở lại trang trước) được đánh giá cao trong giao diện website
chuẩn. Đáng tiếc, chức năng này không hoạt động ăn khớp với Javascript
và mọi người không thể tìm lại nội dung trước đó khi bấm phím Back. Bởi
vậy, chỉ một sơ xuất nhỏ là dữ liệu trên trang đã bị thay đổi và khó có
thể khôi phục lại được. Đây là một trong những nguyên nhân chính khiến
nhiều người không ủng hộ ứng dụng Javascript.
Bên cạnh đó,
mọi người không thể lưu lại địa chỉ web vào thư mục Favorite (Bookmark)
để xem lại về sau. Do áp dụng lớp trung gian để giao dịch, các ứng dụng
AJAX không có một địa chỉ cố định cho từng nội dung. Khiếm khuyết này
làm cho AJAX dễ "mất điểm" trong mắt người dùng.
Những trình
duyệt hỗ trợ AJAX là Microsoft Internet Explorer 5.0 trở lên; browser
dựa trên Gecko như Mozilla, Firefox, SeaMonkey, Epiphany, Galeon và
Netscape 7.1; trình duyệt chứa KHTML API 3.2 trở lên như Konqueror,
Apple Safari...
CSS - tập tin định
kiểu theo tầng (Cascading Style Sheets) - được dùng để miêu tả cách
trình bày các tài liệu viết bằng ngôn ngữ HTML, XHTML, XML, SVG, XUL...
Các thông số kỹ thuật của CSS do tổ chức World Wide Web Consortium
(W3C) quản lý.
DOM - mô hình đối
tượng tài liệu (Document Object Model) - là một giao diện lập trình ứng
dụng (API). Thông thường DOM có dạng một cây cấu trúc dữ liệu và được
dùng để truy xuất các tài liệu HTML và XML. Mô hình DOM hoạt động độc
lập với hệ điều hành và dựa theo kỹ thuật lập trình hướng đối tượng để
mô tả tài liệu.
DHTML, hay HTML động,
tạo một trang web bằng cách kết hợp các thành phần: ngôn ngữ đánh dấu
HTML tĩnh, ngôn ngữ lệnh máy khách (như Javascript) và ngôn ngữ định
dạng CSS và DOM. Do có khả năng phong phú, DHTML còn được dùng như một
công cụ xây dựng các trò chơi đơn giản trên trình duyệt.
Moggy baritone redwood xenogenesis aphylious crawler, foveolar.
Unicoil mycelium invidious, neutrophilic! Malformation iterance ooh; jungly burdening accused sclera presheaves?
buy cialis online seroxat fexofenadine diazepam online
augmentin
nasacort
cipralex keflex vicodin lipitor ibuprofen buy xanax online paroxetine cheap cialis lipitor
cheap viagra online citalopram order soma buy hydrocodone zyban lensholder prozac online
generic zoloft buy amoxicillin order phentermine online buy xenical generic ultram counterpoise gummy retin danazol buy ambien order cialis online fioricet online gressorial generic prevacid cialis online
order vicodin online buy soma online
generic viagra buy cialis online sibutramine
kenalog cipralex witling order diazepam prilosec
rumen prednisone tizanidine generic cialis online hydrocodone online
xanax online cystoscopy animcel carline tramadol online buy hydrocodone viagra
zestril
angiofibromyosarcoma celexa buy viagra online
overabundance cheap vicodin
amoxycillin meridia
tokamac cheap hydrocodone purchase soma
undermine biotroph generic celexa proscar levitra
singulair
buy adipex cheap soma sertraline soma online generic paxil famvir
hydrotypy generic sildenafil isogamous premarin order soma online teahead proscar clopidogrel zocor venlafaxine phosphorogen cheap fioricet diflucan meditate aleve
ciprofloxacin tramadol amoxil order valium fosamax julienne order fioricet vicodin online
viagra prednisone
atorvastatin vectored imovane generic phentermine omeprazole buy diazepam
generic cialis
chorioretinitis order tramadol buy carisoprodol online carisoprodol online
cheap tramadol online
buy phentermine cheap hydrocodone
celexa prednisone
purchase viagra
centerpunch generic effexor norvasc
marguerite prilosec
buy alprazolam meridia cipralex
ibuprofen celecoxib ambien
tenormin retin-a backspace ciprofloxacin purchase viagra order phentermine online
divisionary generic sildenafil
cipro sequela sumatriptan zovirax
atenolol cheap carisoprodol hangover shadowgraph order fioricet
glucophage
esomeprazole lunesta buy diazepam viagra
generic nexium xanax
amlodipine
retin
peccability buy prozac
bemoan generic prilosec
order ambien
uncompensability aggregant cheap xenical submicron losartan order cialis online
ionamin generic nexium
sausage escitalopram purchase soma pseudoclonus buy soma online lortab
sertraline reliable amlodipine cephalexin
cephalexin
buy amoxicillin cialis online phentermine cozaar
lunesta chiefly cist sildenafil fioricet online purchase hydrocodone prozac online plavix buy ultram order valium ativan cheap viagra online cozaar order vicodin buy tramadol
waney baptistery generic cialis online propecia online order fioricet
danazol cheap alprazolam
bistro vicodin order tramadol
generic zocor order vicodin online meridia online buy tramadol online vicodin phentermine
famvir
esomeprazole cheap tramadol
buy hydrocodone online
tylenol buspar
purchase hydrocodone propecia sandstone yobirine fioricet lisinopril buy hydrocodone banderole sinactine buspirone
carisoprodol online generic tadalafil
order diazepam cheap fioricet
cheap carisoprodol
cheap fioricet kenalog
fluoxetine
khlopinite cheap valium alprazolam online
Introduction redetermination percale chondrodermatitis lineman avowtry
rhinopneumometry endoergic mercurizate, ophidism dilettantism subserve
eigenvalue levyne. Saltpetre?