PHP and AJAX XML Example
- ການໜ້ານີ້ຫລັງ AJAX Suggest
- ການໜ້ານີ້ ຖານຂໍ້ມູນ AJAX
AJAX ສາມາດສົມທຽບກັບ ບັນຊີ XML ໃນການສົມທຽບທີ່ມີຄວາມສາມາດ.
AJAX XML ການຄົ້ນຄວ້າ
ໃນການຄົ້ນຄວ້າ AJAX ດ້ວຍ AJAX ພວກເຮົາຈະສະແດງເວັບໄຊການບໍ່ຕ້ອງປ່ຽນບ່ອນ (AJAX) ທີ່ຈະອ່ານຂໍ້ມູນຈາກ ບັນຊີ XML.
ເລືອກ CD ໃນລາຍການດ້ານລຸ່ມທີ່ລາວຫນື່ງ.
ກໍາໄລຂອງພິມແມ່ນສາມເວັບໄຊ:
- HTML ຟອມທີ່ງາຍ
- ຫນື່ງ XML ບັນຊີ
- ຫນື່ງ JavaScript ບັນຊີ
- ຫນື່ງ PHP ເວັບໄຊ
HTML ຟອມ
ບັນທາງປະກອບມີສະໜອງ HTML ຟອມ ແລະ ຢູ່ກັບ JavaScript:
<html> <head> <script src="selectcd.js"></script> </head> <body> <form> Select a CD: <select name="cds" onchange="showCD(this.value)"> <option value="Bob Dylan">Bob Dylan</option> <option value="Bee Gees">Bee Gees</option> <option value="Cat Stevens">Cat Stevens</option> </select> </form> <p> <div id="txtHint"><b>CD info will be listed here.</b></div> </p> </body> </html>
ຄວາມຄິດທີ່ປະກອບຕົວ:
ຄືພວກເຈົ້າເຫັນໄດ້ວ່າພວກເຂົາແມ່ນຟອມຮູບພາບ HTML ທີ່ມີລາຍການ "cds".
ວັດສະນະ "p" ພາຍໃຕ້ຟອມຮູບພາບທີ່ມີລາຍການ "txtHint".
ບໍ່ວ່າບັນດາຜູ້ນຳໃຊ້ໄດ້ເລືອກຂໍ້ມູນຈະມີການດຳເນີນການຂອງພະລັງງານ "showCD".ການດຳເນີນຂອງພະລັງງານຖືກຈຸດເລືອກ "onchange".
ອີງຕາມທີ່ພວກເຈົ້າເຫັນໄດ້ວ່າ,ພວກເຂົາແມ່ນພະລັງງານ HTML ທີ່ມີລາຍການຫົວຂໍ້ "cds".
XML ນັ້ນ
XML ນັ້ນແມ່ນ "cd_catalog.xml“.ບັນຊີນີ້ບັນຈຸຂໍ້ມູນກ່ຽວກັບ CD.
JavaScript
ນີ້ແມ່ນລະຫັດສັນຍານ JavaScript ທີ່ບັນຈຸໃນບັນຊີ "selectcd.js":
var xmlHttp function showCD(str) { xmlHttp=GetXmlHttpObject() if (xmlHttp==null) { alert ("Browser does not support HTTP Request") return } var url="getcd.php" url=url+"?q="+str url=url+"&sid="+Math.random() xmlHttp.onreadystatechange=stateChanged xmlHttp.open("GET",url,true) xmlHttp.send(null) } function stateChanged() { if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { document.getElementById("txtHint").innerHTML=xmlHttp.responseText } } 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; }
ຄວາມຄິດທີ່ປະກອບຕົວ:
ວິກິ stateChanged() ແລະ GetXmlHttpObject function ທີ່ບໍ່ແຕກຕ່າງກັນກັບກ່ອນໜ້ານີ້ໃນຂອງຫຼັກວິກິຢູ່ມັນເລື່ອງ ທ່ານສາມາດອົບພົບຄວາມກ່ຽວຂ້ອງໃນຫຼັກວິກິຢູ່ມັນເລື່ອງກ່ອນໜ້ານີ້.
ວິກິ showCD()
ຖ້າໄດ້ເລືອກວັດຖຸໃນລາຍການຕົກລົງ ວິກິຢູ່ມັນເລື່ອງ
- ເພີ່ມ GetXmlHttpObject function ເພື່ອສ້າງ XMLHTTP Object
- ກຳນົດ URL ທີ່ສົ່ງໄປຫາທະນາຄານ (ບັນຊີເອກະສານ)
- ເພີ່ມກຳນົດພາກສາມາດສະແດງໃນລາຍການຕົກລົງ (q) ໃນ URL
- ເພີ່ມຈຸດທີ່ບໍ່ມີຢ່າງລຶກການເລື່ອງທີ່ຖືກໃຊ້ໂດຍທະນາຄານ
- ເພີ່ມຈຸດມີຫຼັງການລະບາຍເຫດການ stateChanged
- ເປີດ XMLHTTP Object ໃນ URL ທີ່ໃຫ້ກຳນົດ
- ສົ່ງການຮ້ອງຂໍ HTTP ໄປຫາທະນາຄານ
PHP Page
ເວບໄຂທີ່ຖືກເອິ້ນໂດຍ JavaScript ມັນເປັນເອກະສານ PHP ທີ່ລະອຽດ "getcd.php".
ເວບໄຂນີ້ໄດ້ຖືກຂຽນໂດຍ PHP ທີ່ໃຊ້ XML DOM ເພື່ອເຊື່ອມຕິດ 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($cd->item($i)->nodeName); echo(": "); echo($cd->item($i)->childNodes->item(0)->nodeValue); echo("<br />"); } } ?>
ການອະທິບາຍຄວາມຈິງ
ການເກີດຂຶ້ນ: ເມື່ອຂໍ້ມູນຈາກ JavaScript ຖືກສົ່ງໄປໃຫ້ PHP ຂາຍ
- PHP ສ້າງ XML DOM object ສຳລັບ ສະໜາມ "cd_catalog.xml"
- ການຮອບການກວມທັງໝົດ artist element (nodetypes = 1), ຄົ້ນຫາຊື່ທີ່ກັບກັບຂໍ້ມູນທີ່ຖືກສົ່ງມາໂດຍ JavaScript
- ຄົ້ນຫາ CD ທີ່ມີ artist ທີ່ກັບກັບ
- ການສະແດງຂໍ້ມູນ album ແລະສົ່ງໄປ "txtHint" placeholder
- ການໜ້ານີ້ຫລັງ AJAX Suggest
- ການໜ້ານີ້ ຖານຂໍ້ມູນ AJAX