الأمثلة في الوقت الحقيقي بحث PHP أجاكس
أجاكس يمكن أن توفر للمستخدمين تجربة بحث أكثر ودية، أكثر تفاعلية.
أجاكس بحث لايف
في الأمثلة التالية، ونحن سوف يبرهن على وجود البحث في الوقت الحقيقي، ويمكنك الحصول على نتائج البحث أثناء كتابة البيانات في نفس الوقت.
البحث في الوقت الحقيقي مع البحث التقليدية، مقارنة مع العديد من المزايا:
- عند كتابة البيانات، وسوف تظهر نتيجة مباراة
- عندما يستمر كتابة البيانات والنتائج فلتر
- إذا كانت النتيجة هي صغيرة جدا، يمكنك حذف الحرف للحصول على مجموعة واسعة
أدخل في مربع النص أدناه "HTML"، عمليات البحث التي تحتوي على صفحة HTML:
أمثلة على النتائج المذكورة أعلاه في ملف XML ( links.xml للعثور) في. لجعل هذا المثال صغيرة وبسيطة، ونحن نقدم فقط 6 النتائج.
أمثلة توضح - صفحة HTML
عندما يقوم المستخدم في شخصية مربع الإدخال أعلاه يؤدي "showResult) (" وظيفة. وتتألف هذه الوظيفة من "onkeyup" الزناد الحدث:
<html> <head> <script> function showResult(str) { if (str.length==0) { document.getElementById("livesearch").innerHTML=""; document.getElementById("livesearch").style.border="0px"; return; } 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("livesearch").innerHTML=xmlhttp.responseText; document.getElementById("livesearch").style.border="1px solid #A5ACB2"; } } xmlhttp.open("GET","livesearch.php?q="+str,true); xmlhttp.send(); } </script> </head> <body> <form> <input type="text" size="30" onkeyup="showResult(this.value)"> <div id="livesearch"></div> </form> </body> </html>
وأوضح المصدر:
إذا مربع الإدخال فارغ (str.length == 0)، وهذه وظيفة مسح محتوى نائب livesearch، والخروج من وظيفة.
إذا مربع الإدخال ليست فارغة، ثم showResult () بتنفيذ الخطوات التالية:
- إنشاء كائن مدعوم
- إنشاء وظيفة عندما يكون الملقم جاهز لأداء استجابة
- ملف على الملقم لإرسال الطلبات
- يرجى ملاحظة أن إضافة إلى (يحتوي على مربع الإدخال) نهاية معلمة URL (ف)
ملف PHP
خوادم المذكورة أعلاه من خلال جافا سكريبت يدعو هذه الصفحة يسمى "livesearch.php" ملف PHP.
"Livesearch.php" البحث شفرة المصدر ملفات XML التي تطابق عنوان سلسلة البحث، وإرجاع النتيجة:
<?php $xmlDoc=new DOMDocument(); $xmlDoc->load("links.xml"); $x=$xmlDoc->getElementsByTagName('link'); // 从 URL 中获取参数 q 的值 $q=$_GET["q"]; // 如果 q 参数存在则从 xml 文件中查找数据 if (strlen($q)>0) { $hint=""; for($i=0; $i<($x->length); $i++) { $y=$x->item($i)->getElementsByTagName('title'); $z=$x->item($i)->getElementsByTagName('url'); if ($y->item(0)->nodeType==1) { // 找到匹配搜索的链接 if (stristr($y->item(0)->childNodes->item(0)->nodeValue,$q)) { if ($hint=="") { $hint="<a href='" . $z->item(0)->childNodes->item(0)->nodeValue . "' target='_blank'>" . $y->item(0)->childNodes->item(0)->nodeValue . "</a>"; } else { $hint=$hint . "<br /><a href='" . $z->item(0)->childNodes->item(0)->nodeValue . "' target='_blank'>" . $y->item(0)->childNodes->item(0)->nodeValue . "</a>"; } } } } } // 如果没找到则返回 "no suggestion" if ($hint=="") { $response="no suggestion"; } else { $response=$hint; } // 输出结果 echo $response; ?>
إذا جافا سكريبت لإرسال أي نص (أي strlen ($ ف)> 0)، يحدث:
- تحميل ملف XML إلى كائن DOM XML جديد
- من خلال كل <عنوان> العنصر من أجل إيجاد مطابقة نص جافا سكريبت الوعظ
- تعيين URL الصحيح وعنوان متغير "استجابة $". إذا وجد أكثر من مباراة واحدة، سيتم إضافة جميع المباريات إلى المتغير.
- إذا تم العثور على أي تطابق وضع المتغير استجابة $ ب "لا اقتراح".