BàI 1: TỔng quan về asp


Sử dụng đói tượng XMLHttp



tải về 50.79 Kb.
trang3/7
Chuyển đổi dữ liệu02.01.2022
Kích50.79 Kb.
#28792
1   2   3   4   5   6   7

2.2.Sử dụng đói tượng XMLHttp


Sau khi đã tạo đối tượng XMLHttp, ta bắt đầu thực hiện việc tạo request đến server. Bước đầu tiên là gọi phương thức open, dùng để khởi tạo đối tượng. Phương thức này nhận vào 3 tham số:

  • Request Type: là 1 chuỗi cho biết loại request cần thực hiện, có thể là GET hoặc POST.

  • URL: là chuỗi URL cho biết địa chỉ cần gởi request đến.

  • Async: là 1 giá trị boolean, cho biết request có được thực hiện 1 cách bất đồng bộ hay không.

Tham số này rất quan trọng, nó xác định cách thức mà javascript thực hiện request. Khi được thiết lập là true, request sẽ được thực hiện 1 cách bất đồng bộ, và các đoạn lệnh javascript vẫn tiếp tục được thực hiện mà không cần phải chờ response từ server. Vì vậy, ta cần phải cài đặt 1 hàm xử lí sự kiện có nhiệm vụ chờ response từ server. Nếu async là false thì các đoạn lệnh javascript kế tiếp sẽ không được thực hiện cho đến khi server gởi xong dữ liệu về. Nếu như thời gian mà server trả response về là lâu thì sẽ gây bất tiện vì người dùng không thể tương tác được với trang web trong khoảng thời gian đó. Vì vậy, cách tốt nhất là gán cho async giá trị True khi gọi hàm open.

Ví dụ: Để thực hiện 1 request yêu cầu server trả về nội dung file info.txt nằm trên thư mục chứa trang web trên server thì ta thực hiện như sau:

oXmlHttp.open("get", "info.txt", true);

Đối tượng XMLHttp có 1 thuộc tính là readyState, tham số này sẽ thay đổi khi mà request được thực hiện và khi client nhận được response từ server. Thuộc tính này có 5 giá trị như sau:


  • 0 (Uninitialized): Đối tượng mới đựơc tạo nhưng hàm open chưa được gọi.

  • 1 (Loading): Hàm open mới được gọi nhưng request chưa được gởi

  • 2 (Loaded): Request vừa mới được gởi

  • 3 (Interactive): Client đã nhận được một phần response từ server

  • 4 (Complete): Tất cả dữ liệu đã được server gởi về client và kết nối đã đóng lại.

Mỗi lần thuộc tính readyState thay đổi giá trị thì sự kiện readystatechange được phát sinh và hàm xử lí sự kiện onreadystatechange được gọi. Do các browser cài đặt đối tượng XMLHttp khác nhau nên để đảm bảo trang web của mình có thể chạy được trên nhiều browser thì ta chỉ nên dùng các giá trị sau của thuộc tính readyState: 0, 1 và 4

Trong hầu hết các trường hợp, ta chỉ cần xét trường hợp thuộc tính readyState có giá trị là 4, tức là khi toàn bộ dữ liệu từ server đã gởi đến client.



Trong đoạn lệnh ở trên, ta định nghĩa 1 hàm onreadystatechange có chức năng hiển thị 1 dialog box để thông báo.

Bước cuối cùng là gọi hàm send(), hàm này sẽ thực sự gởi request lên server. Hàm này có 1 tham số, đó là chuỗi chứa phần body của request. Đối với request loại GET thì không cần phần body này, do đó, ta gọi hàm send với tham số là NULL. Đối với loại request là POST thì tham số này khác null.

oXmlHttp.send(null);

Sau khi gọi hàm này thì request được gởi đi, khi toàn bộ dữ liệu được nhận về thì hàm onreadystatechange sẽ được gọi và ở đây, ta sẽ thực hiện các xử lí tương ứng với dữ liệu nhận được. Dữ liệu này được lấy thông qua 1 trong 2 thuộc tính responseText hoặc responseXML.

Thuộc tính responseText chứa chuỗi response trong khi responseXML chứa 1 đối tượng tài liệu XML. Thuộc tính responseXML chỉ được dùng khi loại dữ liệu trả về là text/xml. Trong trường hợp yêu cầu nội dung file info.txt trong ví dụ trên thì ta chỉ cần dùng thuộc tính responseText.

Nếu sử dụng thuộc tính responseXML thì cần tìm hiểu thêm về DOMDocument vì responseXML chính là 1 đối tượng DOMDocument. Có thể tìm thông tin về loại đối tượng này trong MSDN 2003 với từ khóa “DOMDocument”.

Một đoạn code ví dụ sử dụng thuộc tính responseXML

var xmldoc = httpRequest.responseXML;

var root_node = xmldoc.getElementsByTagName(root).item(0);

alert(root_node.firstChild.data);

1   2   3   4   5   6   7




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương