Ví dụ sử dụng AJAX với dữ liệu XML trong JavaScript
Javascript nâng cao | by
Trong quá trình phát triển web, việc trao đổi dữ liệu giữa trình duyệt và server là một nhu cầu thiết yếu. AJAX (Asynchronous JavaScript and XML) ra đời như một giải pháp giúp thực hiện điều này một cách linh hoạt và không cần tải lại toàn bộ trang. Mặc dù hiện nay JSON là định dạng dữ liệu phổ biến hơn, XML vẫn đóng vai trò quan trọng trong nhiều hệ thống cũ, dịch vụ web hoặc các ứng dụng sử dụng chuẩn dữ liệu phức tạp. Việc hiểu cách sử dụng AJAX để lấy và xử lý dữ liệu XML sẽ giúp lập trình viên tương thích tốt hơn với các hệ thống đang vận hành và có khả năng xử lý đa dạng định dạng dữ liệu.
Trong bài viết này, mình sẽ cùng tìm hiểu cách gửi yêu cầu AJAX và xử lý phản hồi XML bằng JavaScript thông qua các ví dụ minh họa cụ thể.
Giới thiệu về dữ liệu XML trong JavaScript
XML là gì?
XML (Extensible Markup Language) là một ngôn ngữ đánh dấu mở rộng được thiết kế để lưu trữ và vận chuyển dữ liệu. Không giống như HTML – ngôn ngữ dùng để hiển thị nội dung, XML chủ yếu tập trung vào mô tả dữ liệu một cách có cấu trúc và rõ ràng. Mỗi phần dữ liệu được đặt trong các thẻ mở và đóng, cho phép tổ chức thông tin theo dạng cây dễ hiểu và dễ phân tích.
Cấu trúc dữ liệu XML
Dữ liệu XML sử dụng cú pháp thẻ giống như HTML, nhưng không có các thẻ định dạng. Các phần tử có thể được lồng vào nhau, tạo thành cấu trúc phân cấp. Ví dụ:
<products> <product> <id>101</id> <name>Bút bi</name> <price>5000</price> </product> <product> <id>102</id> <name>Vở kẻ ngang</name> <price>10000</price> </product> </products>
Trong ví dụ trên, <products>
là phần tử cha chứa nhiều phần tử <product>
, mỗi sản phẩm lại có các thuộc tính con như <id>
, <name>
, và <price>
.
So sánh sơ bộ XML với JSON
Tiêu chí | XML | JSON |
---|---|---|
Cú pháp | Dài dòng, sử dụng thẻ mở/đóng | Ngắn gọn, dễ đọc |
Phân tích | Yêu cầu thao tác DOM hoặc XPath | Dễ dàng chuyển sang đối tượng JS |
Trình bày dữ liệu | Có thể kết hợp với các thuộc tính | Chỉ bao gồm cặp key-value |
Ứng dụng hiện tại | Giảm dần, vẫn dùng trong các hệ thống cũ | Được sử dụng rộng rãi trong API hiện đại |
Ứng dụng thực tế của XML trong JavaScript
XML từng là định dạng phổ biến cho việc truyền dữ liệu trong web và hệ thống doanh nghiệp. Dù hiện nay JSON đã thay thế phần lớn vai trò của XML, nhưng XML vẫn được sử dụng trong:
-
Web Services dạng SOAP – nơi XML là định dạng mặc định để trao đổi thông tin.
-
RSS / Atom Feeds – cung cấp nội dung cập nhật từ trang web.
-
Các hệ thống quản lý doanh nghiệp cũ – đặc biệt trong ngân hàng, viễn thông, logistics…
-
Lưu trữ cấu hình và cấu trúc dữ liệu phức tạp – nhờ khả năng mô tả dữ liệu lồng nhau tốt.
Việc nắm rõ cách sử dụng và xử lý XML là điều cần thiết khi làm việc với các dự án có tính kế thừa hoặc tích hợp với hệ thống truyền thống.
Trong ví dụ trên, <products>
là phần tử cha chứa nhiều phần tử <product>
, mỗi sản phẩm lại có các thuộc tính con như <id>
, <name>
, và <price>
.
So sánh sơ bộ XML với JSON
Tiêu chí | XML | JSON |
---|---|---|
Cú pháp | Dài dòng, sử dụng thẻ mở/đóng | Ngắn gọn, dễ đọc |
Phân tích | Yêu cầu thao tác DOM hoặc XPath | Dễ dàng chuyển sang đối tượng JS |
Trình bày dữ liệu | Có thể kết hợp với các thuộc tính | Chỉ bao gồm cặp key-value |
Ứng dụng hiện tại | Giảm dần, vẫn dùng trong các hệ thống cũ | Được sử dụng rộng rãi trong API hiện đại |
Ứng dụng thực tế của XML
XML từng là định dạng phổ biến cho việc truyền dữ liệu trong web và hệ thống doanh nghiệp. Dù hiện nay JSON đã thay thế phần lớn vai trò của XML, nhưng XML vẫn được sử dụng trong:
-
Web Services dạng SOAP – nơi XML là định dạng mặc định để trao đổi thông tin.
-
RSS / Atom Feeds – cung cấp nội dung cập nhật từ trang web.
-
Các hệ thống quản lý doanh nghiệp cũ – đặc biệt trong ngân hàng, viễn thông, logistics…
-
Lưu trữ cấu hình và cấu trúc dữ liệu phức tạp – nhờ khả năng mô tả dữ liệu lồng nhau tốt.
Việc nắm rõ cách sử dụng và xử lý XML là điều cần thiết khi làm việc với các dự án có tính kế thừa hoặc tích hợp với hệ thống truyền thống.
const xhr = new XMLHttpRequest();
Bước 2: Cấu hình yêu cầu bằng .open()
Sử dụng phương thức .open()
để thiết lập loại yêu cầu (GET/POST), URL và chế độ bất đồng bộ:
xhr.open("GET", "data.xml", true); // Gửi GET request tới file data.xml
Bước 3: Gửi yêu cầu đến server bằng .send()
Sau khi cấu hình, gọi .send()
để gửi yêu cầu:
xhr.send();
Bước 4: Xử lý phản hồi với .onreadystatechange
hoặc .onload
Có thể sử dụng sự kiện onreadystatechange
để theo dõi trạng thái yêu cầu:
xhr.onreadystatechange = function () { if (xhr.readyState === 4 && xhr.status === 200) { // Xử lý dữ liệu XML tại đây } };