Introduction à la recherche en temps réel AJAX pour débutants PHP
AJAX peut offrir aux utilisateurs une expérience de recherche plus conviviale et interactive
Dans l'exemple suivant, nous allons démontrer une recherche en temps réel et obtenir les résultats de la recherche pendant que vous tapez les données
Par rapport à la recherche traditionnelle, la recherche en temps réel présente de nombreux avantages :
Lors de la saisie des données, les résultats correspondants seront affichés
Lorsque vous continuez à saisir des données, les résultats correspondants seront affichés. Filtrer. les résultats
S'il y a trop peu de résultats, supprimez des caractères pour obtenir une plage plus large
Veuillez consulter le cas suivant
Nous créons d'abord un head.xml et le code est comme suit
<!DOCTYPE html> <html> <meta charset="utf-8"> <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","demo.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>
Ensuite, nous écrivons le fichier php, le code est le suivant :
<?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; ?>
Remarque :
Si la zone de saisie est vide (str.length==0 ), cette fonction effacera le contenu de l'espace réservé livesearch et quittera la fonction.
Si la zone de saisie n'est pas vide, alors showResult() effectuera les étapes suivantes :
Créer un objet XMLHttpRequest
Créer une fonction à exécuter lorsque le serveur répond est prêt
Envoyer une requête au fichier sur le serveur
Veuillez faire attention au paramètre (q) ajouté à la fin de l'URL (y compris le contenu de la zone de saisie)
Vous devez créer un nouveau links.xml et le mettre dans le même fichier. Dans le répertoire level, le code est le suivant :
<?xml version="1.0" encoding="UTF-8"?> <pages> <link> <title>HTML a 标签</title> <url>http://www.php.cn/tags/tag-a.html</url> </link> <link> <title>HTML br 标签</title> <url>http://www.php.cn/tags/tag-br.html</url> </link> <link> <title>CSS background 属性</title> <url>http://www.php.cn/cssref/css3-pr-background.html</url> </link> <link> <title>CSS border 属性</title> <url>http://www.php.cn/cssref/pr-border.html</url> </link> <link> <title>JavaScript Date 对象</title> <url>http://www.php.cn/jsref/jsref-obj-date.html</url> </link> <link> <title>JavaScript Array 对象</title> <url>http://www.php.cn/jsref/jsref-obj-array.html</url> </link> </pages>