PHP - AJAX and PHP
AJAX 는 보다 더 대화형의 응용프로그램을 만드는데 사용됩니다.
AJAX PHP Example
다음의 예는 사용자가 입력 필드에 문자를 입력할 때 웹페이지가 웹서버와 어떻게 통신하는지를 보여줍니다.:
Example
Start typing a name in the input field below:
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;
?>