5. Mục tiêu cần đạt được
1.7.3 Đối tượng XMLHttpRequest
- XMLHttpRequest được đưa ra ban đầu trong Internet Explorer 5 như là một ActiveXcomponent. Nó chỉ hoạt động với Internet Explorer nên đã làm cho một số nhà phát triển làm việc với XMLHttpRequest, cho tới khi nó trở thành một chuẩn không chính thức trong Mozilla 1.0 và Safari 1.2. Một điều rất quan trọng cần phải chú ý là XMLHttpRequest không là chuẩn của W3C mặc dù rất nhiều chức năng của nó được đề xuất trong các
đặc tả. Vì thế, đối với những trình duyệt khác nhau có sự khác biệt nhỏ về hỗ trợ đối tượng này.
- Để sử dụng XMLHttpRequest trước tiên cần sử dụng Javascript tạo đối tượng XMLHttpRequest theo nhiều cách khác nhau. Internet Explorer thực thi XMLHttpRequest như một đối tượng ActiveX, các trình duyệt khác như FireFox, Safri, Chrome, Opera… thực thi nó như một đối tượng Javascript nguyên thủy. Vì sự khác nhau đó, đoạn mã Javascript phải chứa các cấu trúc logic để tạo một thể hiện của XMLHttpRequest dùng kỹ thuật ActiveX hay đối tượng Javascript nguyên thủy. Trong trường hợp này, chúng ta kiểm tra sự hỗ trợ của trình duyệt bằng đoạn mã Javascript sau:
var xmlhttp;
// Nếu trình duyệt là IE7+, Firefox, Chrome, Opera, Safari if (window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest(); }
// Nếu trình duyệt là IE6, IE5 else{ xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } Hoặc sử dụng: function GetXmlHttpObject() { var xmlHttp = null; try {
xmlHttp = new XMLHttpRequest(); } catch (e) { // IE5, 6 try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } return xmlHttp; }
- Sau khi tạo ra một đối tượng XMLHttpRequest, chúng ta tiếp tục bằng việc mở một kết nối đến máy chủ (server) bằng cách sử dụng phương thức open của đối tượng XMLHttpRequest với cú pháp:
xmlHttp.open(“tham_số”);
Phương thức open tiếp nhận 2 tham số bắt buộc và 3 tham số tùy chọn được mô tả như sau:
Tham số Mô tả
Async True nếu muốn gửi yêu cầu đến máy chủ theo kiểu không đồng bộ. Cần phải gán tham số này là true nếu đã bật (set) thuộc tính onreadystatechange. Giá trị tham số này là false sẽ ngăn chặn trình duyệt tiếp nhận thêm bất cứ đầu vào nào từ người dùng.
Method Chỉ rõ phương thức HTTP chúng ta muốn sử dụng. Các giá trị gồm POST, GET hoặc PUT.
User Chỉ rõ tên người dùng được sử dụng nhằm mục đích xác thực người dùng trước khi thực thi kịch bản lệnh. Điều này là cần thiết khi kịch bản yêu cầu xác thực người dùng.
Password Chỉ rõ mật khẩu được sử dụng nhằm mục đích xác thực người dùng trước khi thực thi kịch bản lệnh. Điều này là cần thiết khi kịch bản yêu cầu xác thực người dùng.
Url Chỉ rõ đường dẫn tuyệt đối hoặc tương đối đến dữ liệu hay dịch vụ Web phía máy chủ mà chúng ta muốn gọi ra.
Bảng 1.2: Các tham số của phương thức open
- Sau khi máy chủ xử lý xong, kết quả trả về sẽ đưuọc gọi thông qua hàm callback. Điều đó yêu cầu chúng ta báo cho đối tượng XMLHttpRequest biết được hàm callback nào đang được sử dụng bằng cách thiết đặt thuộc tính onreadystatechange của nó.