Đối tượng XMLHttpRequest - AJAX trong JavaScript
Javascript nâng cao | by
Trong thời đại web hiện đại, trải nghiệm người dùng mượt mà và phản hồi nhanh chóng là yếu tố then chốt để giữ chân người truy cập. Một trong những công nghệ nền tảng giúp đạt được điều đó chính là AJAX (Asynchronous JavaScript and XML) – kỹ thuật cho phép gửi và nhận dữ liệu từ server mà không cần tải lại toàn bộ trang web.
Trước khi các API hiện đại như fetch()
ra đời, công cụ chủ lực giúp AJAX hoạt động chính là đối tượng XMLHttpRequest
. Đây là một thành phần cốt lõi trong JavaScript, cho phép các lập trình viên xây dựng các ứng dụng web linh hoạt, phản hồi tức thì theo hành động của người dùng. Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết về XMLHttpRequest
, cách sử dụng, ứng dụng thực tế cũng như các điểm cần lưu ý khi làm việc với đối tượng này.
Đối tượng XMLHttpRequest là gì?
XMLHttpRequest
là một đối tượng được tích hợp sẵn trong trình duyệt, cho phép gửi các yêu cầu HTTP/HTTPS đến server và nhận dữ liệu phản hồi một cách bất đồng bộ. Đây là công nghệ cốt lõi của kỹ thuật AJAX, giúp trang web có thể giao tiếp với server phía sau hậu trường mà không cần tải lại toàn bộ trang – mang lại trải nghiệm mượt mà và nhanh chóng cho người dùng.
Một số đặc điểm chính của XMLHttpRequest
:
-
Được cung cấp bởi trình duyệt, không cần thư viện ngoài.
-
Cho phép gửi và nhận dữ liệu từ server thông qua các phương thức HTTP như: GET, POST, PUT, DELETE, v.v.
-
Hỗ trợ giao tiếp đồng bộ hoặc bất đồng bộ, tuy nhiên bất đồng bộ là chế độ mặc định và khuyến khích sử dụng.
-
Có thể xử lý dữ liệu dưới nhiều định dạng như văn bản thuần (
text
), XML, hoặc JSON (phân tích thủ công).
Vì sao XMLHttpRequest
quan trọng?
Trước khi các giải pháp hiện đại như Fetch API
hay thư viện như Axios
phổ biến, XMLHttpRequest
là phương tiện duy nhất và chuẩn mực để thực hiện gọi AJAX. Nắm vững XMLHttpRequest
không chỉ giúp hiểu rõ về cách AJAX hoạt động mà còn hữu ích khi cần tương thích với các trình duyệt cũ hoặc môi trường đặc biệt không hỗ trợ các API mới.
Các bước sử dụng XMLHttpRequest trong JavaScript
Để sử dụng XMLHttpRequest
trong JavaScript, bạn cần thực hiện tuần tự theo 4 bước chính: tạo đối tượng, cấu hình yêu cầu, xử lý phản hồi, và gửi yêu cầu. Cụ thể như sau:
Tạo đối tượng XMLHttpRequest
Đầu tiên, bạn cần khởi tạo một thể hiện mới của XMLHttpRequest
:
const xhr = new XMLHttpRequest();
Đối tượng xhr
sẽ dùng để thiết lập và gửi yêu cầu HTTP cũng như nhận và xử lý phản hồi từ server.
Cấu hình yêu cầu
Sử dụng phương thức .open()
để cấu hình yêu cầu mà bạn sắp gửi. Cú pháp:
xhr.open(method, url, async);
-
method
: Phương thức HTTP, thường là"GET"
hoặc"POST"
. -
url
: Đường dẫn đến tài nguyên hoặc API cần truy cập. -
async
: Tham số boolean (true
hoặcfalse
) cho biết có muốn gửi yêu cầu bất đồng bộ hay không (nên đểtrue
để không chặn giao diện người dùng).
Ví dụ:
xhr.open("GET", "https://api.example.com/data", true);
Xử lý phản hồi từ server
Bạn có thể xử lý phản hồi bằng một trong hai cách phổ biến:
Dùng onreadystatechange
(cách truyền thống):
xhr.onreadystatechange = function () { if (xhr.readyState === 4 && xhr.status === 200) { const data = JSON.parse(xhr.responseText); console.log("Dữ liệu nhận được:", data); } };
-
xhr.readyState === 4
: Đảm bảo yêu cầu đã hoàn tất. -
xhr.status === 200
: Kiểm tra server phản hồi thành công. -
xhr.responseText
: Nội dung phản hồi (thường là JSON hoặc text).
Hoặc dùng onload
(cách hiện đại và dễ hiểu hơn):
xhr.onload = function () { if (xhr.status === 200) { const data = JSON.parse(xhr.responseText); console.log("Dữ liệu nhận được:", data); } else { console.error("Lỗi:", xhr.status); } };
Gửi yêu cầu đến server
Cuối cùng, dùng .send()
để thực sự gửi request:
xhr.send();