0
0
Lập trình
Admin Team
Admin Teamtechmely

Tìm hiểu về XMLHttpRequest trong JavaScript

Đăng vào 2 tháng trước

• 4 phút đọc

Chủ đề:

KungFuTech

Tìm hiểu về XMLHttpRequest trong JavaScript

Giới thiệu

XMLHttpRequest (XHR) là một đối tượng tích hợp trong JavaScript được sử dụng để gửi các yêu cầu HTTP đến máy chủ và tải dữ liệu mà không cần phải tải lại toàn bộ trang. Công nghệ này đã được giới thiệu vào những năm đầu thập niên 2000 và là nền tảng cho AJAX (JavaScript bất đồng bộ và XML). Mặc dù tên gọi có chứa từ “XML”, nhưng XHR có thể xử lý nhiều loại dữ liệu khác nhau như JSON, văn bản, XML, hoặc bất kỳ dữ liệu nào.

Tại sao XMLHttpRequest lại quan trọng?

Trước khi có XMLHttpRequest, nếu bạn muốn lấy dữ liệu mới từ máy chủ, toàn bộ trang web sẽ phải tải lại. Với XHR, JavaScript có thể:

  • Gửi yêu cầu dữ liệu một cách bất đồng bộ trong nền.
  • Cập nhật một phần của trang một cách động.

Cú pháp cơ bản

Dưới đây là cú pháp cơ bản để sử dụng XMLHttpRequest:

javascript Copy
const xhr = new XMLHttpRequest();
xhr.open("GET", "https://jsonplaceholder.typicode.com/posts/1", true);

xhr.onload = function () {
  if (xhr.status === 200) {
    console.log(JSON.parse(xhr.responseText));
  } else {
    console.error("Yêu cầu thất bại với mã trạng thái", xhr.status);
  }
};

xhr.onerror = function () {
  console.error("Lỗi mạng");
};

xhr.send();

Ví dụ đầu ra

Khi thực hiện yêu cầu trên, bạn sẽ nhận được dữ liệu như sau:

json Copy
{
  "userId": 1,
  "id": 1,
  "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
  "body": "quia et suscipit\nsuscipit recusandae..."
}

Đặc điểm của XMLHttpRequest

  • Works with callbacks (không phải Promises).
  • Cú pháp dài hơn so với fetch.
  • Vẫn được hỗ trợ trên tất cả các trình duyệt để đảm bảo tính tương thích ngược.
  • Chủ yếu bị thay thế bởi fetch và Axios trong JavaScript hiện đại.

Các thực tiễn tốt nhất khi sử dụng XMLHttpRequest

  1. Sử dụng onreadystatechange: Để theo dõi trạng thái của yêu cầu và thực hiện các hành động tương ứng.
  2. Kiểm tra mã trạng thái: Luôn kiểm tra mã trạng thái HTTP để đảm bảo yêu cầu thành công trước khi xử lý dữ liệu.
  3. Xử lý lỗi: Sử dụng onerror để quản lý lỗi mạng và tránh các sự cố không mong muốn.
  4. Giảm thiểu số lượng yêu cầu: Tránh gửi nhiều yêu cầu không cần thiết để tối ưu hóa hiệu suất.

Những cạm bẫy thường gặp

  • Không xử lý trạng thái khác ngoài 200: Nhiều lập trình viên chỉ kiểm tra mã trạng thái 200 và bỏ qua các mã trạng thái khác, điều này có thể dẫn đến lỗi không mong muốn.
  • Không sử dụng abort(): Nếu không cần thiết, bạn có thể hủy yêu cầu đang chạy để tiết kiệm băng thông và tài nguyên.
  • Không cập nhật UI: Đảm bảo rằng UI luôn cập nhật sau khi nhận dữ liệu mới từ máy chủ.

Mẹo tối ưu hiệu suất

  • Sử dụng GET cho truy vấn không thay đổi: Đối với các yêu cầu không thay đổi dữ liệu, hãy sử dụng phương thức GET để tận dụng bộ nhớ cache của trình duyệt.
  • Gộp các yêu cầu: Nếu có thể, hãy gộp nhiều yêu cầu thành một yêu cầu duy nhất để giảm thiểu số lượt gọi đến máy chủ.
  • Sử dụng setTimeout: Để tránh gửi yêu cầu quá nhanh, hãy sử dụng setTimeout để điều chỉnh tốc độ gửi yêu cầu.

Giải quyết vấn đề

Trong quá trình sử dụng XMLHttpRequest, có thể gặp phải một số vấn đề như:

  • Yêu cầu không phản hồi: Kiểm tra xem máy chủ có hoạt động hay không và đảm bảo URL là chính xác.
  • Lỗi mạng: Thực hiện kiểm tra mạng để đảm bảo kết nối internet không bị gián đoạn.
  • Dữ liệu không hợp lệ: Nếu bạn nhận được dữ liệu không như mong đợi, hãy kiểm tra đầu ra của máy chủ và xử lý lỗi một cách thích hợp.

Kết luận

XMLHttpRequest vẫn là một công cụ hữu ích trong JavaScript mặc dù đã có nhiều công nghệ mới hơn như fetch và Axios. Tuy nhiên, việc hiểu rõ cách hoạt động và cách sử dụng XMLHttpRequest có thể giúp bạn duy trì khả năng tương thích với các dự án cũ và cải thiện kỹ năng lập trình của mình. Hãy thử nghiệm với các ví dụ ở trên và khám phá thêm về cách sử dụng XMLHttpRequest trong các ứng dụng của bạn!

Câu hỏi thường gặp (FAQ)

  1. XMLHttpRequest có an toàn không?
    Có, nhưng bạn cần đảm bảo rằng bạn đang gửi yêu cầu đến các máy chủ đáng tin cậy và xử lý dữ liệu một cách an toàn.
  2. Có thể sử dụng XMLHttpRequest để gửi dữ liệu không?
    Có, bạn có thể sử dụng phương thức POST để gửi dữ liệu đến máy chủ.
  3. Tôi có thể sử dụng XMLHttpRequest trên các trình duyệt cũ không?
    Có, XMLHttpRequest được hỗ trợ trên hầu hết các trình duyệt từ trước đến nay.

Tài nguyên tham khảo

Hãy bắt đầu áp dụng XMLHttpRequest vào dự án của bạn ngay hôm nay!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào