يمكن استخدام AJAX للتواصل بشكل تفاعلي مع ملفات XML.
سيوضح المثال التالي كيفية قراءة صفحة الويب للمعلومات من ملف XML عبر AJAX:
عندما يقوم المستخدم بتحديد قرص مضغوط في القائمة المنسدلة أعلاه، يتم تنفيذ وظيفة تسمى "showCD()". يتم تشغيل هذه الوظيفة بواسطة حدث "onchange":
<html><head><script>function showCD(str){ if (str=="") { document.getElementById("txtHint").innerHTML="" } if (window.XMLHttpRequest) { // تنفذ متصفحات IE7+ وFirefox وChrome وOpera وSafari xmlhttp=new XMLHttpRequest() } else { // IE6, IE5 ينفذ المتصفح xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("txtHint"). الداخليHTML=xmlhttp.responseText; xmlhttp.open("GET"،getcd.php?q="+str,true); xmlhttp.send();}</script></head><body><form>حدد قرصًا مضغوطًا:<select name ="cds" onchange="showCD(this.value)"><option value="">اختر قرصًا مضغوطًا:</option><option value="Bob Dylan">Bob Dylan</option><option value=" بوني تايلر">بوني تايلر</option><option value="دوللي بارتون">دوللي بارتون</option></select></form><div id="txtHint"><b>سيتم إدراج معلومات القرص المضغوط هنا...</ ب></div></body></html>
تقوم الدالة showCD() بالخطوات التالية:
تحقق مما إذا تم تحديد قرص مضغوط
إنشاء كائن XMLHttpRequest
قم بإنشاء وظيفة يتم تنفيذها عندما تكون استجابة الخادم جاهزة
إرسال طلب إلى ملف على الخادم
لاحظ المعلمة (q) المضافة إلى نهاية عنوان URL (التي تحتوي على محتويات القائمة المنسدلة)
صفحة الخادم التي تم استدعاؤها أعلاه من خلال JavaScript هي ملف PHP يسمى "getcd.php".
يقوم البرنامج النصي PHP بتحميل مستند XML، "cd_catalog.xml"، وتشغيل الاستعلام مقابل ملف XML، وإرجاع النتائج بتنسيق 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++){ // عقدة عنصر العملية 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++){ // عقدة عنصر العملية if ($cd->item($i)->nodeType==1) { echo("<b>" . $cd->item($i)->nodeName . ":</b > "); echo($cd->item($i)->childNodes->item(0)->nodeValue); echo("<br>"); }}?>
عندما يتم إرسال استعلام القرص المضغوط من JavaScript إلى صفحة PHP، ماذا يحدث:
يقوم PHP بإنشاء كائن XML DOM
ابحث عن الأسماء في جميع عناصر <artist> التي تطابق البيانات التي تم تمريرها بواسطة JavaScript
قم بإخراج معلومات الألبوم وأرسل العنصر النائب "txtHint".