مثال PHP - AJAX و XML
يمكن استخدام AJAX للتواصل التفاعلي مع ملف XML.
مثال AJAX XML
سيوضح المثال التالي كيف يمكن لصفحة الويب جلب المعلومات من ملف XML باستخدام AJAX:
مثال
CD info will be listed here...
شرح المثال - صفحة HTML
عندما يختار المستخدم قرصًا مضغوطًا في القائمة المنسدلة أعلاه ، يتم تنفيذ وظيفة تسمى "showCD ()". يتم تشغيل الوظيفة بواسطة حدث "onchange":
<html>
<head>
<script>
function showCD(str)
{
if (str=="") {
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","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>
تقوم وظيفة showCD () بما يلي:
- تحقق من تحديد قرص مضغوط
- قم بإنشاء كائن XMLHttpRequest
- قم بإنشاء الوظيفة التي سيتم تنفيذها عندما تكون استجابة الخادم جاهزة
- أرسل الطلب إلى ملف موجود على الخادم
- لاحظ أنه تمت إضافة المعامل (q) إلى عنوان URL (مع محتوى القائمة المنسدلة)
ملف PHP
الصفحة الموجودة على الخادم التي يطلق عليها 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++)
{
//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>");
}
}
?>
عندما يتم إرسال استعلام القرص المضغوط من JavaScript إلى صفحة PHP ، يحدث ما يلي:
- تقوم PHP بإنشاء كائن XML DOM
- ابحث عن جميع عناصر <artist> التي تطابق الاسم المرسل من JavaScript
- إخراج معلومات الألبوم (إرسالها إلى العنصر النائب "txtHint")