tutorial pengembangan web terbaru
 

PHP Contoh - AJAX dan XML


AJAX dapat digunakan untuk komunikasi interaktif dengan file XML.


AJAX XML Contoh

Contoh berikut akan menunjukkan bagaimana sebuah halaman web dapat mengambil informasi dari file XML dengan AJAX:

Contoh


CD info will be listed here...

Contoh Dijelaskan - The HTML Halaman

Bila pengguna memilih CD dalam daftar dropdown di atas, fungsi yang disebut " showCD() " dijalankan. Fungsi ini dipicu oleh "onchange" acara:

<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 (xmlhttp.readyState==4 && xmlhttp.status==200) {
      document.getElementById("txtHint").innerHTML=xmlhttp.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>

The showCD() fungsi melakukan hal berikut:

  • Periksa apakah CD yang dipilih
  • Membuat objek XMLHttpRequest
  • Buat fungsi yang akan dijalankan ketika respon server siap
  • Kirim permintaan off ke file di server
  • Perhatikan bahwa parameter (q) ditambahkan ke URL (dengan isi dari daftar dropdown)

PHP Berkas

Halaman pada server yang disebut oleh JavaScript di atas adalah file PHP yang disebut "getcd.php" .

Script PHP memuat dokumen XML, " cd_catalog.xml ", menjalankan query terhadap file XML, dan mengembalikan hasil sebagai HTML:

<?php
$q=$_GET["q"];

$xmlDoc = new DOMDocument();
$xmlDoc->load("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("<b>" . $cd->item($i)->nodeName . ":</b> ");
    echo($cd->item($i)->childNodes->item(0)->nodeValue);
    echo("<br>");
  }
}
?>

Ketika query CD dikirim dari JavaScript ke halaman PHP, berikut ini terjadi:

  1. PHP menciptakan XML DOM objek
  2. Cari semua <artist> elemen yang cocok dengan nama yang dikirim dari JavaScript
  3. Output informasi album (send to the "txtHint" placeholder)