AJAX는 사용자에게 보다 친숙하고 대화형 검색 경험을 제공할 수 있습니다. 이 기사에서는 AJAX 실시간 검색에 대한 관련 지식을 설명합니다.
AJAX 실시간 검색
다음 예에서는 실시간 검색을 시연하며, 데이터를 입력하는 동안 검색 결과를 얻을 수 있습니다.
기존 검색과 비교하여 실시간 검색에는 다음과 같은 많은 장점이 있습니다.
데이터를 입력하면 일치하는 결과가 표시됩니다.
데이터를 계속 입력하면 결과를 필터링하세요.
결과가 너무 적으면 삭제하세요. 캐릭터는 다음을 수행할 수 있습니다. 더 넓은 범위를 얻으세요
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) 이 함수는 실시간 검색 자리 표시자의 내용을 지우고 종료합니다. 기능 .
입력 상자가 비어 있지 않으면 showResult()는 다음 단계를 수행합니다.
XMLHttpRequest 객체 생성
서버 응답이 준비되면 실행되는 함수 생성
서버의 파일로 요청 보내기
URL 추가시 참고하세요. 마지막에 있는 매개변수(q)(입력 상자의 내용 포함)
PHP 파일
위 문단에서 JavaScript이 호출한 서버 페이지는 " livesearch.php".
"livesearch.php"의 소스 코드는 XML 파일에서 검색 string과 일치하는 헤더를 검색하고 결과를 반환합니다.
<?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;?>
JavaScript가 텍스트(예: strlen($q) > 0)를 보내는 경우,
XML 파일을 새 XML DOM 개체에 로드합니다.
모든
"$response"에 올바른 URL과 제목을 설정합니다. 변하기 쉬운. 일치하는 항목이 두 개 이상 발견되면 모든 일치 항목이 변수에 추가됩니다.
일치하는 항목이 없으면 $response 변수를 "제안 없음"으로 설정하세요.
이 글에서는 AJAX 실시간 검색과 관련된 지식을 자세히 설명하고 있으니 더 많은 학습자료를 보시려면 PHP 중국어 홈페이지를 참고해주세요.
관련 권장 사항:
위 내용은 PHP 예제 - AJAX 실시간 검색에 대한 지식의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!