Mô hình ASP AJAX

AJAX được sử dụng để tạo ra các ứng dụng tương tác hơn.

Mô hình ASP AJAX

Ví dụ dưới đây minh họa: Khi người dùng gõ ký tự trong trường nhập, trang web sẽ giao tiếp với máy chủ web như thế nào:

Mô hình

Vui lòng nhập các chữ cái A-Z trong trường nhập dưới đây:

Tên:

Đề xuất tìm kiếm:

Giải thích ví dụ

Trong ví dụ trên, khi người dùng gõ ký tự trong trường nhập, hàm "showHint()" sẽ được thực hiện.

Hàm này được kích hoạt bởi sự kiện onkeyup.

Dưới đây là mã HTML:

Mô hình

<html>
<head>
<script>
function showHint(str) {
    if (str.length == 0) { 
        document.getElementById("txtHint").innerHTML = "";
        return;
    }
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById("txtHint").innerHTML = this.responseText;
            }
        };
        xmlhttp.open("GET", "gethint.asp?q=" + str, true);
        xmlhttp.send();
    }
}
</script>
</head>
<body>
<p><b>Vui lòng nhập chữ cái A-Z vào trường nhập dưới đây:</b></p>
<form> 
Tên:<input type="text" onkeyup="showHint(this.value)">
</form>
<p>Đề xuất tìm kiếm:<span id="txtHint"></span></p>
</body>
</html>

Thử ngay bây giờ

Giải thích mã:

Trước tiên, kiểm tra trường nhập có trống hay không (str.length == 0);nếu có, xóa nội dung của thanh ghi nhớ txtHint và thoát hàm.

Nhưng, nếu trường nhập không để trống, thì thực hiện như sau:

  • Tạo đối tượng XMLHttpRequest
  • Tạo hàm sẽ được thực thi khi máy chủ phản hồi
  • Gửi yêu cầu đến tệp ASP (gethint.asp) trên máy chủ
  • Vui lòng thêm tham số q vào gethint.asp
  • biến str lưu trữ nội dung của trường nhập

Tệp ASP - "gethint.asp"

Tệp ASP này kiểm tra mảng tên, sau đó trả về tên tương ứng cho trình duyệt:

<%
 response.expires=-1
 dim a(32)
 điền tên vào mảng
 a(1)="Ava"
 a(2)="Brielle"
 a(3)="Caroline"
 a(4)="Diana"
 a(5)="Elise"
 a(6)="Fiona"
 a(7)="Grace"
 a(8)="Hannah"
 a(9)="Ileana"
 a(10)="Jane"
 a(11)="Kathryn"
 a(12)="Laura"
 a(13)="Millie"
 a(14)="Nancy"
 a(15)="Opal"
 a(16)="Petty"
 a(17)="Queenie"
 a(18)="Rose"
 a(19)="Shirley"
 a(20)="Tiffany"
 a(21)="Ursula"
 a(22)="Victoria"
 a(23)="Wendy"
 a(24)="Xenia"
 a(25)="Yvette"
 a(26)="Zoe"
 a(27)="Angell"
 a(28)="Adele"
 a(29)="Beatty"
 a(30)="Carlton"
 a(31)="Elisabeth"
 a(32)="Violet"
 Lấy tham số q từ URL
 q=ucase(request.querystring("q"))
 Xem tất cả các hint trong mảng, độ dài của q có lớn hơn 0 không
 if len(q)>0 then
   hint=""
   for i=1 to 30
     if q=ucase(mid(a(i),1,len(q))) then
       if hint="" then
         hint=a(i)
       else
         hint=hint & " , " & a(i)
       end if
     end if
   next
 end if
 Nếu không tìm thấy hint, xuất "không có gợi ý", hoặc xuất giá trị chính xác
 if hint="" then
   response.write("không có gợi ý")
 else
   response.write(hint)
 end if
%>