Tạo ứng dụng suggestion đơn giản dùng Ajax
Để giải quyết vấn đnhanh cng và hiu quả, mình sm gọn cách thức
trình bày theo quy tắc - ít nhất người đọc bài ny cũng đã hiu được thế nào là
AJAX và cách deploy một ứng dụng của như thế nào
Đầu tiên ta sẻ tạo một form HTML như sau:
<form>
First Name:
<input type="text" id="txt1"
onkeyup="showHint(this.value)">
</form> <p>Suggestions: <span id="txtHint"></span></p>
Ở đây chúng ta có một ô nhập txt1 và được cài sự kiện onkeyup. Sự kiện nầysẻ
gọi hàm showHint(thamsố) và tham số truyền vào sẻ là giá tr của ô nhập.
đây là code của hàm showHint()
function showHint(str)
{
if (str.length==0)
{
document.getElementById("txtHint").innerHTML="";
return;
}
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("Your browser does not support AJAX!");
return;
}
var url="gethint.asp";
url=url+"?q="+str;
url=url+"&sid="+Math.random();
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
m được thực thi mỗi khi có 1 kí tự được nhập vào ô txt1.
Nếu kí t (str.length > 0) hàm sẻ thực thi:
Định nga url (filename) gửi tới server
Thêm một tham số (q) vào url với nội dung là giá tr của ô txt1 (thực chất
là công việc ghép chuỗi đ tạo một request url gửin server)
Thêm một ngẫu nhiên để tránh kng server tạo cache
Tạo một đối tượng XMLHTTP , và gán một hàm thực thi stateChanged
Mđối tượng XMLHTTP với url.
Gửi HTTP request tới server
Nếu ô txt1 rỗng thì m ny sẻ a nội dung của txtHint.
Đoạn code trên gọi 1 hàm GetXmlHttpObject().
Mục đích của hàm ny là gii quyết vấn đề tạo ra đối tượng XMLHTTP trên
các trình duyệt khác nhau:
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
m stateChanged() như sau:
function stateChanged()
{
if (xmlHttp.readyState==4)
{
document.getElementById("txtHint").innerHTML=xmlHttp.responseText;
}
}
m ny được thc thi mỗi khi trng thái của đối tượng XMLHTTP thay đổi.
Khi trạng ti giá trị là 4 ("complete") thì nội dung ca txtHint sđược gán
bằng response text.
y giờ, tổng hp chúng ta có 1 trang HTML hoàn chnh như sau: