Live Search sử dụng Ajax

Trong bài này sẽ trình bày ví dụ minh họa cách tương tác với một tệp XML sử dụng kỹ thuật Ajax.
chuẩn bị tệp cd_catalog.xml: --> laedaily.com/laravel-filemanager/photos/1/php/cd_catalog.xml
Trong ví dụ này sẽ tạo chức năng khi người dùng select một đĩa CD sẽ hiện ra bảng thông tin CD đó
Tạo file index.php có mã như sau:
<html>
<head>
<script>
function showCD(str) {
if (str=="") {
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (this.readyState==4 && this.status==200) {
document.getElementById("txtHint").innerHTML=this.responseText;
}
}
xmlhttp.open("GET","getcd.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>
<form>
Select a CD:
<select name="cds" onchange="showCD(this.value)">
<option value="">Select a CD:</option>
<option value="Bob Dylan">Bob Dylan</option>
<option value="Bee Gees">Bee Gees</option>
<option value="Cat Stevens">Cat Stevens</option>
</select>
</form>
<div id="txtHint"><b>CD info will be listed here...</b></div>
</body>
</html>
Giải thích:

  • Kiểm tra nếu một đĩa CD được chọn
  • Tạo một đối tượng XMLHttpRequest
  • Sử dụng hàm onreadystatechange để lắng nghe các sự kiện từ máy chủ
  • Gửi yêu cầu tới tệp PHP (getcd.php) trên máy chủ
  • Lưu ý rằng tham số q được thêm vào url (getcd.php?q = " + str)
  • Và biến str chứa nội dung của trường đầu vào
Tệp PHP (getuser.php) truy vấn đối với tệp tin cd_catalog.xml và trả về kết quả dưới dạng HTML:
$q=$_GET["q"];

$xmlDoc = new DOMDocument();
$xmlDoc->load("http://laedaily.com/laravel-filemanager/photos/1/php/cd_catalog.xml");

$x=$xmlDoc->getElementsByTagName('ARTIST');

for ($i=0; $i<=$x->length-1; $i++) {
//Process only element nodes
if ($x->item($i)->nodeType==1) {
if ($x->item($i)->childNodes->item(0)->nodeValue == $q) {
$y=($x->item($i)->parentNode);
}
}
}

$cd=($y->childNodes);

for ($i=0;$i<$cd->length;$i++) {
//Process only element nodes
if ($cd->item($i)->nodeType==1) {
echo("" . $cd->item($i)->nodeName . ": ");
echo($cd->item($i)->childNodes->item(0)->nodeValue);
echo("
");
}
}
 
Sửa lần cuối:
  • Chủ đề
    ajax php
  • Thống kê

    Chủ đề
    100,746
    Bài viết
    467,573
    Thành viên
    339,849
    Thành viên mới nhất
    chicstore.accessories
    Top