Ajax (lập trình) – Wikipedia tiếng Việt

AJAX (tiếng Anh: “Asynchronous JavaScript and XML” – nghĩa là “JavaScript và XML không đồng bộ”) là một nhóm các công nghệ phát triển web được sử dụng để tạo các ứng dụng web động hay các ứng dụng giàu tính Internet (rich Internet application). Từ Ajax được ông Jesse James Garrett đưa ra và dùng lần đầu tiên vào tháng 2 năm 2005 để chỉ kỹ thuật này, mặc dù các hỗ trợ cho Ajax đã có trên các chương trình duyệt từ 10 năm trước. Ajax là một kỹ thuật phát triển web có tính tương tác cao bằng cách kết hợp các ngôn ngữ:

  • HTML (hoặc XHTML) với CSS trong việc hiển thị thông tin
  • Mô hình DOM (Document Object Model), được thực hiện thông qua JavaScript, nhằm hiển thị thông tin động và tương tác với những thông tin được hiển thị
  • Đối tượng XMLHttpRequest để trao đổi dữ liệu một cách không đồng bộ với máy chủ web. (Mặc dù, việc trao đổi này có thể được thực hiện với nhiều định dạng như HTML, văn bản thường, JSON và thậm chí EBML, nhưng XML là ngôn ngữ thường được sử dụng).
  • XML thường là định dạng cho dữ liệu truyền, mặc dù bất cứ định dạng nào cũng có thể dùng, bao gồm HTML định dạng trước, văn bản thuần (plain text), JSON và ngay cả EBML.

Giống như DHTML, LAMP hay SPA, Ajax tự nó không phải là một công nghệ tiên tiến mà là một thuật ngữ diễn đạt việc sử dụng phối hợp một nhóm nhiều công nghệ tiên tiến với nhau. Trong đó, HTML và CSS được tích hợp với nhau để ghi lại và định kiểu thông tin. DOM và JavaScript phối hợp lại để hiển thị thông tin động và được cho phép người dùng tương tác với những thông tin này. JavaScript cùng với đối tượng người tiêu dùng XMLHttpRequest tương hỗ việc trao đổi tài liệu bất đồng bộ giữa trình duyệt và máy chủ nhằm mục đích hạn chế việc tải lại nguyên trang .Trong trong thực tiễn, những công nghệ tiên tiến dẫn xuất hoặc phối hợp dựa trên Ajax như AFLAX cũng đã Open .

Trong giai đoạn đầu và giữa thập niên 1990, hầu hết Web site được xây dựng chỉ dựa hoàn toàn vào công nghệ HTML. Mỗi thao tác người dùng đều khiến toàn bộ trang web phải được tải lại từ máy chủ. Quy trình này đã tỏ ra kém hiệu quả, theo phản ánh từ kinh nghiệm người dùng: tất cả nội dung trang biến mất, rồi sau đó xuất hiện trở lại. Mỗi lần trình duyệt web tải lại trang vì một thay đổi ở một phần nhỏ nào đó, tất cả nội dung trang web phải được gởi lại, mặc dù chỉ có một phần nội dung thay đổi. Điều này khiến cho tải lượng từ phía server tăng lên và làm cho băng thông trở thành yếu tố hạn chế khi thực hiện tác vụ.

Năm 1996, thẻ iframe được trình duyệt Internet Explorer đưa ra để tải hoặc nạp nội dung bất đồng bộ .Năm 1998, nhóm tăng trưởng Outlook Web App của Microsoft tăng trưởng thành phần XMLHTTP từ đoạn script gởi từ máy client .Năm 1999, Microsoft sử dụng công nghệ tiên tiến iframe cập nhật động những bản tin và mục làm giá CP trên trang mặc định của Internet Explorer, [ 1 ] và tạo ra điều khiển và tinh chỉnh XMLHTTP ActiveX trong Internet Explorer 5, mà sau này được Mozilla, Safari, Opera và nhiều trình duyệt web khác sử dụng làm đối tượng người tiêu dùng JavaScript XMLHttpRequest. [ 2 ] Microsoft sử dụng quy mô XMLHttpRequest nguyên bản trong phiên bản Internet Explorer 7. Phiên bản ActiveX vẫn được liên tục tương hỗ cho Internet Explorer, nhưng không dành cho Microsoft Edge. The utility of background HTTP requests to the server and asynchronous Web technologies remained fairly obscure until it started appearing in full scale trực tuyến applications such as Outlook Web App ( 2000 ) [ 3 ] and Oddpost ( 2002 ) .Google tiến hành thoáng đãng những ứng dụng có sử dụng Ajax tương thích với tiêu chuẩn, đa trình duyệt như Gmail ( năm 2004 ) và Google Maps ( năm 2005 ). [ 4 ] In October 2004 Kayak. com ‘ s public beta release was among the first large-scale e-commerce uses of what their developers at that time called ” the xml http thing “. [ 5 ]

Khái niệm “Ajax” được Jesse James Garrett sử dụng phổ biến làn đầu là vào ngày 18 tháng 02 năm 2005 trong một bài viết có nhan đề “Ajax: A New Approach to Web Applications”, dựa trên công nghệ được sử dụng trên trang web của Google.[6]

Ngày 05 tháng 04 năm 2006, tổ chức triển khai World Wide Web Consortium ( W3C ) phát hành dự thảo đặc tả tiên phong cho đối tượng người tiêu dùng XMLHttpRequest trong nỗ lực tạo ra một tiêu chuẩn Web chính thức. [ 7 ] [ 8 ] Dự thảo mới nhất cho đối tượng người tiêu dùng XMLHttpRequest được phát hành ngày 30 tháng 01 năm năm trước. [ 9 ]

So sánh với những ứng dụng web truyền thống lịch sử[sửa|sửa mã nguồn]

Hiểu nôm na: Điểm khác biệt cơ bản nhất của công nghệ này là việc xử lý thông tin được thực hiện trên máy yêu cầu dịch vụ thay vì trên máy xử lý yêu cầu dịch vụ như cách truyền thống. Máy xử lý yêu cầu dịch vụ chỉ làm một việc đơn giản là nhận thông tin từ máy khách và trả các dữ liệu về cho máy khách. Máy yêu cầu dịch vụ xử lý sơ bộ thông tin của người dùng nhập vào, sau đó chuyển về máy xử lý yêu cầu dịch vụ rồi nhận dữ liệu từ máy xử lý yêu cầu dịch vụ và xử lý để hiển thị cho người dùng.

Các ứng dụng Ajax phần lớn trông giống như thể chúng được đặt trên máy của người sử dụng hơn là được đặt trên một máy phục vụ thông qua Internet. Lý do: các trang được cập nhật nhưng không nạp lại (refresh) toàn bộ. “Mọi thao tác của người sử dụng sẽ gửi mẫu của một lời gọi JavaScript tới bộ xử lý (engine) Ajax thay vì tạo ra một yêu cầu HTTP (HTTP request)”, Jesse James Garrett đã ghi như vậy trong bài luận đầu tiên định nghĩa về thuật ngữ này. “Mọi đáp ứng cho thao tác của người sử dụng sẽ không cần truy vấn tới máy phục vụ – ví dụ như việc kiểm tra một cách đơn giản sự hợp lệ của dữ liệu, sửa đổi dữ liệu trong bộ nhớ và thậm chí một vài thao tác duyệt trang – bộ xử lý Ajax tự nó đảm nhận trách nhiệm này. Nếu bộ xử lý cần gì từ máy phục vụ để đáp ứng – như khi nó gửi dữ liệu để xử lý, tải về bổ sung các mã giao diện hay nhận về dữ liệu mới – nó sẽ thực hiện các yêu cầu tới máy phục vụ 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 sử dụng với ứng dụng web”.

So sánh ứng dụng web truyền thống (trái) với AJAX (phải)

Các ứng dụng truyền thống cuội nguồn về thực chất là gửi tài liệu từ những form, được nhập bởi người sử dụng, tới một máy Giao hàng web. Máy ship hàng web sẽ vấn đáp bằng việc gửi về một website mới. Do máy Giao hàng phải tạo ra một website mới mỗi lần như vậy nên những ứng dụng chạy chậm và ” lúng túng ” hơn .

Trong khi đó, các ứng dụng Ajax có thể gửi các yêu cầu tới máy phục vụ web để nhận về chỉ những dữ liệu cần thiết, thông qua việc dùng SOAP hoặc một vài dịch vụ web dựa trên nền tảng XML cục bộ khác. Trên máy thân chủ (client), JavaScript sẽ xử lý các đáp ứng của máy chủ. Kết quả là trang web được hiển thị nhanh hơn vì lượng dữ liệu trao đổi giữa máy chủ và trình duyệt web giảm đi rất nhiều. Thời gian xử lý của máy chủ web cũng vì thế mà được giảm theo vì phần lớn thời gian xử lý được thực hiện trên máy khách của người dùng.

Có thể xem xét một website nhiếp ảnh được cho phép người sử dụng nhập những tiêu đề như một ví dụ về cách thao tác của Ajax. Với một ứng dụng web truyền thống lịch sử, hàng loạt website gồm có cả những ảnh cần được nạp lại. Với những công nghệ tiên tiến Ajax, DHTML hoàn toàn có thể sửa chữa thay thế chỉ những đoạn tiêu đề và tác dụng là người dùng có những thanh toán giao dịch ” quyến rũ ” đáng chăm sóc .

Ưu điểm yếu kém[sửa|sửa mã nguồn]

  • Trong nhiều trường hợp, các trang web chứa rất nhiều nội dung thông thường trong trang. Nếu sử dụng các phương pháp truyền thống, những nội dung đó sẽ phải nạp lại toàn bộ với từng yêu cầu. Tuy nhiên, nếu sử dụng Ajax, một ứng dụng web có thể chỉ yêu cầu cho các nội dung cần thiết phải cập nhật, do đó giảm lượng lớn băng thông và thời gian nạp trang.[10][11]
  • Việc dùng các yêu cầu không đồng bộ (asynchronous request) cho phép giao diện người dùng của ứng dụng hiển thị trên trình duyệt giúp người dùng trải nghiệm sự tương tác cao, với nhiều phần riêng lẻ.[12]
  • Việc sử dụng Ajax có thể làm giảm các kết nối đến server, do các mã kịch bản (script) và các style sheet chỉ phải yêu cầu một lần.[12]
  • Các trang web được tạo động không được ghi vào bộ lưu lịch sử lướt web của trình duyệt, do đó nút “back” (quay lui) của trình duyệt sẽ mất tác dụng quay lại trang thái trước đó của trang sử dụng Ajax, thay vào đó sẽ quay lại trang web trước đó mà người dùng ghé thăm. Để khắc phục có thể dùng các IFrame không hiển thị để gây ra sự thay đổi trong lịch sử trình duyệt và thay đổi phần neo của URL (bằng mã a #) khi chạy Ajax và theo dõi những sự thay đổi của nó.[12]
  • Việc cập nhật các trang web động cũng gây khó khăn cho người dùng trong việc bookmark (đánh dấu địa chỉ yêu thích) một trạng thái nào đó của ứng dụng. Cũng có những cách khắc phục cho vấn đề này, một số trong đó sử dụng mã xác định đoạn (fragment identifier) URL (phần URL ở sau dấu ‘#’) để lưu vết, và cho phép người dùng đánh dấu và quay lại một trạng thái nào đó của ứng dụng.[12]
  • Do hầu hết các web crawler không thực thi mã JavaScript, các ứng dụng web sẽ cung cấp một phương thức thay thế để truy cập nội dung thông thường được truy cập bằng Ajax, để cho phép các máy tìm kiếm lập chỉ mục chúng.[13]
  • Bất kỳ người dùng nào có trình duyệt không hỗ trợ Ajax hay JavaScript, hoặc đơn giản là đã bị vô hiệu hóa JavaScript, sẽ đương nhiên không thể sử dụng Ajax.[13] Tương tự, các thiết bị như điện thoại di động, PDA, và thiết bị đọc màn hình (screen reader) có thể không hỗ trợ JavaScript hay đối tượng XMLHttp được yêu cầu. Ngoài ra, các thiết bị đọc màn hình nếu có thể sử dụng Ajax đi nữa cũng vẫn có thể không đọc chính xác các nội dung động.[14]
  • Chế độ same origin policy (chế độ gốc đơn điệu) có thể không cho phép sử dụng Ajax thông qua các tên miền,[15] mặc dù W3C đã có một đồ án sơ thảo để cho phép điều này.[16]
  • Việc thiếu các chuẩn cơ bản của Ajax đồng nghĩa với việc không có nhiều sự chọn lựa thực tiễn tốt nhất để kiểm tra các ứng dụng Ajax. Các công cụ kiểm thử cho Ajax thường không hiểu các mô hình sự kiện, mô hình dữ liệu và giao thức của Ajax.
  • Mở ra một cách thức khác cho việc tấn công của các đoạn mã độc mà những nhà phát triển web có thể không kiểm thử hết được.[17]

Các trình duyệt tương hỗ Ajax[sửa|sửa mã nguồn]

Tài liệu, giáo trình[sửa|sửa mã nguồn]

Liên kết ngoài[sửa|sửa mã nguồn]

Source: https://dpbb.vn
Category: Hỏi đáp

Hãy bình luận đầu tiên

Để lại một phản hồi

Thư điện tử của bạn sẽ không được hiện thị công khai.


*