Exemple PHP - Recherche en temps réel AJAX

Exemple PHP - Recherche en temps réel AJAX

AJAX peut offrir aux utilisateurs une expérience de recherche plus conviviale et interactive.

AJAX Live Search

Dans l'exemple suivant, nous démontrerons une recherche en temps réel, et les résultats de la recherche peuvent être obtenus 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 de données, les résultats correspondants seront affichés

Lorsque vous continuez à saisir des données, filtrez les résultats

S'il y a trop peu de résultats, supprimez des caractères pour obtenir une plage plus large

Entrez « HTML » dans la zone de texte ci-dessous pour rechercher des pages contenant du HTML :

QQ图片20161010103643.png

Les résultats de l'exemple ci-dessus se trouvent dans un fichier XML (links.xml). Pour garder cet exemple petit et simple, nous ne fournissons que 6 résultats.

Explication des exemples - Page HTML

Lorsque l'utilisateur saisit des caractères dans la zone de saisie ci-dessus, la fonction "showResult()" sera exécutée. Cette fonction est déclenchée par l'événement "onkeyup" :

   

Explication du code source :

Si la zone de saisie est vide (str.length==0), cette fonction effacera l'espace réservé de livesearch contenu et quittez 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 noter le paramètre (q) ajouté à la fin de l'URL (contient le contenu de la zone de saisie)

Fichier PHP

Le paragraphe ci-dessus La page du serveur appelée via JavaScript est un fichier PHP nommé "livesearch.php".

Le code source dans "livesearch.php" recherche dans le fichier XML les titres qui correspondent à la chaîne de recherche et renvoie les résultats :

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="" . $y->item(0)->childNodes->item(0)->nodeValue . ""; } else { $hint=$hint . "
" . $y->item(0)->childNodes->item(0)->nodeValue . ""; } } } } } // 如果没找到则返回 "no suggestion" if ($hint=="") { $response="no suggestion"; } else { $response=$hint; } // 输出结果 echo $response; ?>

Si JavaScript envoie du texte (c'est-à-dire strlen($q ) > 0), que se passera-t-il :

Chargez le fichier XML dans un nouvel objet XML DOM

Parcourez tous les éléments par JavaScript</p> <p>Définissez l'URL et le titre corrects dans la variable "$response". Si plusieurs correspondances sont trouvées, toutes les correspondances sont ajoutées à la variable.</p> <p>Si aucune correspondance n'est trouvée, définissez la variable $response sur "aucune suggestion".</p> <p><br></p> </div> </div> <a class="course-btn course_code_header_next" href="//m.sbmmt.com/fr">Formation continue</a> </div> <div class="layui-col-md6 editor-box"> <div id="code_spread_shrink"> <div id="code_spread_shrink_show" unselectable="on"> <span>||</span> </div> </div> <div class="editor-tab js-editor-tab"> <div class="editor-left icon-left editor-op"></div> <div class="editor-view"> <ul class="clearfix" id="J_TabType" style="width: 120px; margin-left: 0px;"> <li class="ui-tabs-active"><a href="javascript:;">nouveau fichier</a></li> </ul> </div> <div class="editor-right icon-right editor-op"></div> </div> <div id="editor-tabs-html" data-filename="index.html" data-lang="php" style="font-size: 16px;height:600px"> <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> <script type="text/javascript" src="/js/jquery.3.5.2.min.m.js"></script> </head><div style="position: fixed;right: 0;top:100px;width: 125px; z-index:2000;"><div ><a target="_blank" rel="nofollow" href="https://www.520xingyun.com/from/188bet.php" ><img width="120px" height="550px" src="https://www.520xingyun.com/images/188_120.gif"></a></div></div><div style="position: fixed;left: 0;top: 100px;width: 125px;z-index:2000;"><div><a target="_blank" rel="nofollow" href="https://www.520xingyun.com/from/188bet.php"><img width="120px" height="550px" src="https://www.520xingyun.com/images/188_120.gif"></a></div></div> <body> <form> <input type="text" size="30" onkeyup="showResult(this.value)"> <div id="livesearch"></div> </form> </body> </html> </div> <div class="editor-btn"> <div class="editor-btn-inner"> <a href="javascript:;" class="code-btn-submit" id="J_Commit" title="soumettre">soumettre</a> <a href="javascript:;" class="code-btn-reset " id="J_EditorReset" title="Réinitialiser le code">Réinitialiser le code</a> <div class="aotorun" style="display: block;"> <input type="checkbox" id="aotoruncheck" title="Si cette option est sélectionnée, la modification du code prendra automatiquement effet. Si cette case n'est pas cochée, la soumission doit prendre effet."> <label for="aotoruncheck" title="Si cette option est sélectionnée, la modification du code prendra automatiquement effet. Si cette case n'est pas cochée, la soumission doit prendre effet.">Opération automatique</label> </div> </div> </div> </div> <div class="layui-col-md3" id="viewPort-content"></div> <!-- 右侧章节列表 --> </div> </div> <div class="phpSyyBox"> <div class="phpSyyLeft"> <div class="phpSyySyj"> <span class="right"><a href="//m.sbmmt.com/fr/code/355.html" title="Section précédente"><b class="icon3"></b>Section précédente</a></span> <em></em> <span class="right"><a href="//m.sbmmt.com/fr/code/361.html" title="section suivante"><b class="icon2"></b>section suivante</a></span> </div> <div class="phpSyyQhlx"> <a href="//m.sbmmt.com/fr/course.html" target="_blank" title="Liste des didacticiels"><b></b>Liste des didacticiels</a> </div> <div class="phpSyyHqbz"> <a href="//m.sbmmt.com/fr/wenda.html" target="_blank" title="obtenir de l'aide"><b></b>obtenir de l'aide</a> </div> <div class="clear"></div> </div> <div class="clear"></div> </div> <div class="layui-main"> <div class="layui-row"> <div class="layui-col-md9"> <div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief"> <ul class="layui-tab-title"> <li class="layui-this">Recommandations de cours</li> <li id="code_down_li">Téléchargement du didacticiel</li> </ul> <div class="layui-tab-content"> <!--推荐课程--> <div class="layui-tab-item layui-show"> <ul class="diy-vodeo diy-li-left php-video-ul"> <li><a href="//m.sbmmt.com/fr/course/1496.html" title=""><img alt="Combat réel Front-end Vue3 [projet vue manuscrit]" src="https://img.php.cn/upload/course/000/000/068/639b12e98e0b5441.png" height="124" width="100%"> <div class="php-course-intro"> <h3><i>Intermédiaire</i>Combat réel Front-end Vue3 [projet vue manuscrit]</h3> </div> <div class="php-course-bottom"> <span class="l">2857 Les gens regardent</span> </div></a></li> <li><a href="//m.sbmmt.com/fr/course/1495.html" title=""><img alt="Tutoriel APIPOST [Vulgarisation des concepts techniques liés à la communication réseau]" src="https://img.php.cn/upload/course/000/000/068/63996f34c6c94370.png" height="124" width="100%"> <div class="php-course-intro"> <h3><i>Élémentaire</i>Tutoriel APIPOST [Vulgarisation des concepts techniques liés à la communication réseau]</h3> </div> <div class="php-course-bottom"> <span class="l">1795 Les gens regardent</span> </div></a></li> <li><a href="//m.sbmmt.com/fr/course/1494.html" title=""><img alt="Numéro 22_Combat réel complet" src="https://img.php.cn/upload/course/000/000/068/6396fa7cacf3b832.png" height="124" width="100%"> <div class="php-course-intro"> <h3><i>Intermédiaire</i>Numéro 22_Combat réel complet</h3> </div> <div class="php-course-bottom"> <span class="l">5521 Les gens regardent</span> </div></a></li> <li><a href="//m.sbmmt.com/fr/course/1493.html" title=""><img alt="Numéro 22_Programmation PHP" src="https://img.php.cn/upload/course/000/000/068/6396fa6f383ca123.png" height="124" width="100%"> <div class="php-course-intro"> <h3><i>Élémentaire</i>Numéro 22_Programmation PHP</h3> </div> <div class="php-course-bottom"> <span class="l">5172 Les gens regardent</span> </div></a></li> <li><a href="//m.sbmmt.com/fr/course/1492.html" title=""><img alt="Numéro 22_Développement front-end" src="https://img.php.cn/upload/course/000/000/068/6396fa6140e14800.png" height="124" width="100%"> <div class="php-course-intro"> <h3><i>Élémentaire</i>Numéro 22_Développement front-end</h3> </div> <div class="php-course-bottom"> <span class="l">8713 Les gens regardent</span> </div></a></li> <li><a href="//m.sbmmt.com/fr/course/1491.html" title=""><img alt="Tutoriel vidéo Big Data (MySQL) version complète" src="https://img.php.cn/upload/course/000/000/068/639188999c8fd700.png" height="124" width="100%"> <div class="php-course-intro"> <h3><i>Intermédiaire</i>Tutoriel vidéo Big Data (MySQL) version complète</h3> </div> <div class="php-course-bottom"> <span class="l">4525 Les gens regardent</span> </div></a></li> <li><a href="//m.sbmmt.com/fr/course/1490.html" title=""><img alt="Allez tutoriel de langue - plein d'informations pratiques et sans bêtises" src="https://img.php.cn/upload/course/000/000/068/638eb9972ff0a840.png" height="124" width="100%"> <div class="php-course-intro"> <h3><i>Élémentaire</i>Allez tutoriel de langue - plein d'informations pratiques et sans bêtises</h3> </div> <div class="php-course-bottom"> <span class="l">2794 Les gens regardent</span> </div></a></li> <li><a href="//m.sbmmt.com/fr/course/1489.html" title=""><img alt="Cours de programmation de base du langage GO" src="https://img.php.cn/upload/course/000/000/068/63884a6b0880e953.png" height="124" width="100%"> <div class="php-course-intro"> <h3><i>Élémentaire</i>Cours de programmation de base du langage GO</h3> </div> <div class="php-course-bottom"> <span class="l">2814 Les gens regardent</span> </div></a></li> <li><a href="//m.sbmmt.com/fr/course/1488.html" title=""><img alt="JS avancé et apprentissage BootStrap" src="https://img.php.cn/upload/course/000/000/068/638702e2c8dda719.png" height="124" width="100%"> <div class="php-course-intro"> <h3><i>Intermédiaire</i>JS avancé et apprentissage BootStrap</h3> </div> <div class="php-course-bottom"> <span class="l">2563 Les gens regardent</span> </div></a></li> <li><a href="//m.sbmmt.com/fr/course/1487.html" title=""><img alt="Optimisation et dépannage SQL (version MySQL)" src="https://img.php.cn/upload/course/000/000/068/63846a02a06a2889.png" height="124" width="100%"> <div class="php-course-intro"> <h3><i>Intermédiaire</i>Optimisation et dépannage SQL (version MySQL)</h3> </div> <div class="php-course-bottom"> <span class="l">3374 Les gens regardent</span> </div></a></li> <li><a href="//m.sbmmt.com/fr/course/1486.html" title=""><img alt="Tutoriel d'entretien avec la base de données Redis+MySQL" src="https://img.php.cn/upload/course/000/000/068/637c751460263927.png" height="124" width="100%"> <div class="php-course-intro"> <h3><i>Intermédiaire</i>Tutoriel d'entretien avec la base de données Redis+MySQL</h3> </div> <div class="php-course-bottom"> <span class="l">2963 Les gens regardent</span> </div></a></li> <li><a href="//m.sbmmt.com/fr/course/1485.html" title=""><img alt="Livrer de la nourriture ou apprendre la programmation ?" src="https://img.php.cn/upload/course/000/000/067/64be34e8b4aa0653.png" height="124" width="100%"> <div class="php-course-intro"> <h3><i>Élémentaire</i>Livrer de la nourriture ou apprendre la programmation ?</h3> </div> <div class="php-course-bottom"> <span class="l">5708 Les gens regardent</span> </div></a></li> </ul> </div> <div class="layui-tab-item"> <div id="code_down" style="margin: 0 30px 26px;"> <div class="no_data" style="text-align: center;min-height: 490px;line-height:112px;padding: 190px 0;box-sizing: border-box;color: #e3e3e3;font-size: 20px;"> <div style="background: url(/static/images/lesson_video_lists.png) no-repeat;margin-right: 20px;width: 118px;height: 112px;background-position: 0 -389px;float:left;"></div>Le didacticiel n'est pas disponible au téléchargement pour le moment. Le staff est actuellement en train de l'organiser. Veuillez prêter plus d'attention à ce cours à l'avenir ~ </div> </div> </div> </div> </div> </div> <div class="layui-col-md3 video-right-course"> <div class="layui-col-md12 title"> <p>Les étudiants qui ont regardé ce cours apprennent également</p> </div> <div class="layui-col-md12 php-video-img"> <a class="recommend" href="//m.sbmmt.com/fr/course/812.html" target="_blank"><img width="300" height="160" src="https://img.php.cn/upload/course/000/000/041/620debc3eab3f377.jpg" alt="Le dernier didacticiel vidéo ThinkPHP 5.1 en première mondiale (60 jours pour devenir un expert PHP en ligne)"><span class="font14">491179 joue</span></a> </div> <div class="layui-col-md12 php-video-list"> <ul> <li><a class="font14 color66" title="Parlons brièvement de la création d'une entreprise en PHP" href="//m.sbmmt.com/fr/course/1503.html" target="_blank">Parlons brièvement de la création d'une entreprise en PHP</a></li> <li><a class="font14 color66" title="Introduction rapide au développement web front-end" href="//m.sbmmt.com/fr/course/901.html" target="_blank">Introduction rapide au développement web front-end</a></li> <li><a class="font14 color66" title="Développement pratique à grande échelle par Tianlongbabu du cadre MVC version Mini imitant le site Web de l'encyclopédie des choses embarrassantes" href="//m.sbmmt.com/fr/course/836.html" target="_blank">Développement pratique à grande échelle par Tianlongbabu du cadre MVC version Mini imitant le site Web de l'encyclopédie des choses embarrassantes</a></li> <li><a class="font14 color66" title="Premiers pas avec le développement pratique PHP : création rapide de PHP [Small Business Forum]" href="//m.sbmmt.com/fr/course/902.html" target="_blank">Premiers pas avec le développement pratique PHP : création rapide de PHP [Small Business Forum]</a></li> <li><a class="font14 color66" title="Vérification de connexion et forum de discussion classique" href="//m.sbmmt.com/fr/course/866.html" target="_blank">Vérification de connexion et forum de discussion classique</a></li> <li><a class="font14 color66" title="Collecte de connaissances sur les réseaux informatiques" href="//m.sbmmt.com/fr/course/1463.html" target="_blank">Collecte de connaissances sur les réseaux informatiques</a></li> <li><a class="font14 color66" title="Démarrage rapide de la version complète de Node.JS" href="//m.sbmmt.com/fr/course/1462.html" target="_blank">Démarrage rapide de la version complète de Node.JS</a></li> <li><a class="font14 color66" title="Le cours front-end qui vous comprend le mieux : HTML5/CSS3/ES6/NPM/Vue/...[Original]" href="//m.sbmmt.com/fr/course/1455.html" target="_blank">Le cours front-end qui vous comprend le mieux : HTML5/CSS3/ES6/NPM/Vue/...[Original]</a></li> <li><a class="font14 color66" title="Écrivez votre propre framework PHP MVC (40 chapitres en profondeur/gros détails/à lire absolument pour que les débutants progressent)" href="//m.sbmmt.com/fr/course/1467.html" target="_blank">Écrivez votre propre framework PHP MVC (40 chapitres en profondeur/gros détails/à lire absolument pour que les débutants progressent)</a></li> </ul> </div> </div> </div> </div> <div class="phpcn-modal-layer fixed" style="z-index:9004;visibility:visible;opacity:1;display:none;"> <div class="phpcn-modal-title"> <div class="phpcn-modal-draggable dragging"> <span>Remarques</span> <a href="javascript:void(0)" class="phpcn-icon-close phpcn-modal-close js-modal-close">X</a> </div> </div> <div class="phpcn-modal-inner"> <div class="phpcn-modal-dialog"></div> </div> </div> <div class="phpFoot"> <div class="phpFootIn"> <div class="phpFootCont"> <div class="phpFootLeft"> <dl> <dt> <a href="//m.sbmmt.com/fr/about/us.html" rel="nofollow" target="_blank" title="À propos de nous" class="cBlack">À propos de nous</a> <a href="//m.sbmmt.com/fr/about/disclaimer.html" rel="nofollow" target="_blank" title="Clause de non-responsabilité" class="cBlack">Clause de non-responsabilité</a> <a href="//m.sbmmt.com/fr/update/article_0_1.html" target="_blank" title="Sitemap" class="cBlack">Sitemap</a> <div class="clear"></div> </dt> <dd class="cont1"> Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement! </dd> </dl> </div> </div> </div> </div> <input type="hidden" id="verifycode" value="/captcha.html"> </body> </html>