PHP - AJAX and PHP


AJAX 는 보다 더 대화형의 응용프로그램을 만드는데 사용됩니다. 


AJAX PHP Example

다음의 예는 사용자가 입력 필드에 문자를 입력할 때 웹페이지가 웹서버와 어떻게 통신하는지를 보여줍니다.:

Example

Start typing a name in the input field below:

First name:

Suggestions:




Example Explained - The HTML Page

위의 입력 필드에 사용자가 문자를 입력할 때, "showHint()" 함수가 실행된다. 함수는 "onkeyup" 이벤트에 의해서 트리거된다.:

<html>
<head>
<script>
function showHint(str)
{
if (str.length==0)
  {
  document.getElementById("txtHint").innerHTML="";
  return;
  }
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","gethint.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>

<p><b>Start typing a name in the input field below:</b></p>
<form>
First name: <input type="text" onkeyup="showHint(this.value)">
</form>
<p>Suggestions: <span id="txtHint"></span></p>

</body>
</html>

소스 코드 설명:

입력 필드가 비어 있으면 (str.length==0), 함수는 txtHint 자리의 내용을 클리어하고 함수를 종료한다. 

입력 필드가 비어 있지 않으면, showHint() 함수는 다음을 실행한다.:

  • XMLHttpRequest 객체를 생성
  • 서버 응답이 준비 되었을 때 실행될 함수를 생성.
  • 서버의 파일에 요청을 보내기
  • 파라메타(q)가 (입력 필드의 내용과 함께) URL에 추가 된 것을 주목하시오

PHP File

위의 JavaScript 에 의해서 호출된 서버의 페이지는 "gethint.php" 라는 PHP 파일입니다.

"gethint.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=$_REQUEST["q"]; $hint="";

// lookup all hints from array if $q is different from ""
if ($q !== "")
  { $q=strtolower($q); $len=strlen($q);
    foreach($a as $name)
    { if (stristr($q, substr($name,0,$len)))
      { if ($hint==="")
        { $hint=$name; }
        else
        { $hint .= ", $name"; }
      }
    }
  }

// Output "no suggestion" if no hint were found
// or output the correct values
echo $hint==="" ? "no suggestion" : $hint;
?>