Nhập môn AJAX (12)

Đối tượng XMLHttpRequest – Phân tích các đặc tính – GET & POST

Các phương thức GET và POST

Trên lý thuyết, sử dụng GET khi request không thay đổi giá trị, tức là nhiều request sẽ trả về cùng kết quả. Trong thực tế, nếu phương thức tương ứng ở server thay đổi trạng thái theo một vài cách, thì điều này không còn đúng nữa. Điều này có nghĩa, nó là một chuẩn. Có rất nhiều sự khác biệt với chuẩn trong điều kiện kích thước của phần đệm (payload) – trong nhiều trường hợp, các trình duyệt và server sẽ giới hạn độ dài của địa chỉ URL sử dụng để gửi dữ liệu tới server. Tóm lại, dùng GET để truy lục dữ liệu từ server; hay nói cách khác tránh được việc thay đổi trạng thái trên với lời gọi GET.

Phương thức POST được dùng khi muốn thay đổi trạng thái trên server. Không giống như GET, phải thiết lập phần Content-Type header trên đối tượng XMLHttpRequest như sau:

xmlHttp.setRequestHeader(“Content-Type”,“application/
x-www-form-urlencoded”
);

POST không hạn chế kích thước của payload được gửi tới server, và POST request không cần bảo đảm tính không đổi.

Hầu hết các request được thiết lập ở GET request; tuy nhiên trạng thái POST cũng luôn sẵn sàng khi cần thiết.

Đối tượng XMLHttpRequest – Remote Scripting – Giới thiệu

Remote Scripting

Về cơ bản, remote scripting là một loại lời gọi các thủ tục từ xa. Sự tương tác với server vẫn như các ứng dụng Web thông thường, nhưng không tái nạp (refresh) toàn bộ trang web. Chỉ với AJAX, mới có thể sử dụng công nghệ bất kỳ phía server để có thể nhận các request, xử lí chúng và trả về kết quả. Với mỗi công nghệ phía server, có một số lựa chọn cho phía client để thực hiện remote scripting.

Có thể nhúng vào các đoạn Flash, Java applet, hay các ActiveX vào ứng dụng. Thậm chí cũng có thể dùng một số công nghệ như XML-RPC, nhưng sự phức tạp của phương pháp này làm giảm tính phổ biến của nó. Cách thực thi cơ bản đối với remote scripting bao gồm phối hợp một cripting với một IFRAME và server trả về các đoạn mã JavaScript, các đoạn mã này sẽ được chạy trong trình duyệt.

Microsoft có giải pháp riêng về remote scripting, được gọi là Microsoft Remote Scripting (MSRS), cho phép gọi các server script giống như là chúng cục bộ. Một Java applet được nhúng vào trang web để làm cho sự liên lạc với server được dễ dàng, một trang asp được dùng để chứa các script phía server, một file .html quản lí bên phía client.

Có thể dùng các giải pháp của Microsoft với Netscape và Internet Explorer 4.0 trở nên. Các lời gọi hàm này có thể đồng bộ hay bất đồng bộ. Tuy nhiên giải pháp này yêu cầu Java, có nghĩa là cần có sự cài đặt thêm vào, và nó phụ thuộc vào trình Internet Information Services (IIS), từ đó làm giảm sự lựa chọn cho phía server.

Ví dụ về Remote Scripting

Để so sánh, chúng ta cùng xét một ví dụ về công nghệ tương tự AJAX được thực thi như thế nào dùng IFRAME. Ví dụ sau chỉ ra việc dùng IFRAME cho remote scripting.

Trong ví dụ này có hai file iframe.html và server.html. Server.html giả lập một response được trả về từ server.

iframe.html

<html>
<head>
<title>Example of remote scripting in an IFRAME</title>
</head>
<script type=”text/javascript”>
function handleResponse() {
   alert(‘this function is called from server.html’);
}
</script>
<body>
<h1>Remote Scripting with an IFRAME</h1>
<iframe id=”beforexhr” name=”beforexhr” style=”width:0px; height:0px; border: 0px” src=”blank.html”></iframe>
<a href=”server.html” target=”beforexhr”>call the server </a>
</body>
</html>

server.html

<html>
<head>
<title>the server</title>
</head>
<script type=”text/javascript”>
window.parent.handleResponse();
</script>
<body>
</body>
</html>