본문 바로가기
jQuery

[고급] AJAX 제시어 소스코드

by ethanjoh 2009. 8. 3.
제시어 예제를 위한 AJAX 소스 코드

아래의 소스 코드는 앞서 살펴봤던 AJAX 예제이다.
복사 후 붙여넣기를 통해 시도해 볼 수 있다.

AJAX HTML 페이지

HTML 페이지이다. 간단한 HTML 폼과 자바스크립트 연결을 포함하고 있다.

<html>
<head>
<script src="clienthint.js"></script>
</head>
<body>

<form>
First Name: <input type="text" id="txt1" onkeyup="showHint(this.value)" />
</form>
<p>Suggestions: <span id="txtHint"></span></p>

</body>
</html>

(*주: txt1이라는 입력 필드에 이름을 입력하면 사용자 모르게 서버에 요청을 하고 서버에서 다시 제시어 값을 되돌려주면 txtHint 영역에 제시어가 나타나는 예제이다. AJAX의 원리에 대해 모른다면 2009/07/28 - [AJAX] - [기초] AJAX 튜토리얼 시리즈부터 먼저 살펴보자.)

AJAX 자바스크립트

"clienthint.js" 파일로 저장한 자바스크립트 코드이다.

var xmlhttp

function showHint(str)
{
if (str.length==0)
  {
  document.getElementById("txtHint").innerHTML="";
  return;
  }
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support XMLHTTP!");
  return;
  }
var url="gethint.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)
  {
  document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
  }
}

function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  return new XMLHttpRequest();
  }
if (window.ActiveXObject)
  {
  // code for IE6, IE5
  return new ActiveXObject("Microsoft.XMLHTTP");
  }
return null;
}


AJAX 서버 페이지 - PHP (원문에는 ASP 소스도 있다.)

특별히 고안된 AJAX 서버같은 것은 없다. AJAX 페이지는 어떤 종류의 인터넷 서버에서도 제공이 가능하다.
앞 장의 예제에 있는 자바스크립트가 호출하는 서버페이지는 "gethint.php" 라는 간단한 PHP 파일이다.

<?php
// Fill up array with names
$a[]="Anna";
$a[]="Brittany";
$a[]="Cinderella";
$a[]="Diana";
$a[]="Eva";
$a[]="Fiona";
$a[]="Gunda";
$a[]="Hege";
$a[]="Inga";
$a[]="Johanna";
$a[]="Kitty";
$a[]="Linda";
$a[]="Nina";
$a[]="Ophelia";
$a[]="Petunia";
$a[]="Amanda";
$a[]="Raquel";
$a[]="Cindy";
$a[]="Doris";
$a[]="Eve";
$a[]="Evita";
$a[]="Sunniva";
$a[]="Tove";
$a[]="Unni";
$a[]="Violet";
$a[]="Liza";
$a[]="Elizabeth";
$a[]="Ellen";
$a[]="Wenche";
$a[]="Vicky";

//get the q parameter from URL
$q=$_GET["q"];

//lookup all hints from array if length of q>0
if (strlen($q) > 0)
  {
  $hint="";
  for($i=0; $i<count($a); $i++)
    {
    if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q))))
      {
      if ($hint=="")
        {
        $hint=$a[$i];
        }
      else
        {
        $hint=$hint." , ".$a[$i];
        }
      }
    }
  }

// Set output to "no suggestion" if no hint were found
// or to the correct values
if ($hint == "")
  {
  $response="no suggestion";
  }
else
  {
  $response=$hint;
  }

//output the response
echo $response;
?>