کاربرد Ajax در PHP در این مثال یک کادر متن داریم که به تایپ کردن کاربر درون آن ، حساس است . هر زمان که کاربر کاراکتری را درون آن تایپ نماید ، این کنترل لیستی از آیتم های پیشنهادی که با آن کاراکتر شروع می شوند ، را به کاربر نمایش می دهد . در این مثال صفحه PHP به وسیله یک دستور Ajax ، با یک فایل آماده از عناوین ارتباط برقرار کرده و اطلاعات لازم را از آن دریافت می کند . 1 ) کد تابع ( ) showHint : هنگامی که کاربر در کادر متن موجود در صفحه PHP تایپ می کند ، به وسیله رویداد ( ) onkeyup آن ، تابع ( ) showHint اجرا می شود . کد این تابع در جدول زیر نمایش داده شده است . کد را یکبار مرور نمایید . سپس به توضیح گام به گام هر بخش از مثال پرداخته شده است : [TABLE="class: ex"] [TR] [TD="class: prname"] کد تابع ShowHint ( ) [/TD] [TD="class: prdes, align: left"] function showHint(str) { var xmlhttp; // Ajax ایجاد یک متغیر برای ذخیره کردن شی if (str.length==0) { document.getElementById("txtHint").innerHTML=""; 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("txtHint").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","gethint.php?q="+str,true); xmlhttp.send( ); } [/TD] [/TR] [/TABLE] 2 ) توضیح گام به گام کد مثال : هر یک از بخش های کد مثال که با یک رنگ خاص مشخص شده اند ، را توضیح می دهیم : [*=right]این بخش کد مثال ، بررسی می کند اگر کادر متن خالی باشد ( str.length==0 ) ، تابع مقدار عنصر txtHint موجود بر روی صفحه را پاک کرده و از تابع خارج می شود . [*=right]این بخش از کد یک شی XMLHttpRequest را ساخته و عملیات Ajax را آغاز می کند . کد لازم برای پشتیبانی انواع مرورگرها را قرار داده ایم . [*=right]این بخش از کد ، بررسی می کند که آیا پاسخ درخواست Ajax از سرور برگشته و آماده است یا خیر . سپس در صورت آماده بودن جواب ، مقدار آن را در عنصر txtHint موجود بر روی صفحه قرار می دهد . این بخش از کد ، شی xmlhttp ، را آماده کرده و به وسیله متد GET ، آن را به فایل مورد نظرمان یعنی gethint.php ارسال می کند . همچنین توجه داشته باشید ، که متغیر str به وسیله پارامتر q به صفحه مقصد PHP ارسال شده است ، که بعدا در آن دریافت و استفاده خواهد شد . [HR][/HR] 3 ) کد صفحه PHP مثال : همانطور که در کد ایجکس در بخش اول مشاهده کردید ، کد ایجکس ، فایل gethint.php را در دستور خود فراخوانی و اجرا می کند . این فایل ، به جستجوی نام های معادل با کاراکتر ورودی توسط کاربر پرداخته و نتیجه ای معادل را بر می گرداند . در صورتی که هم ، معادلی برای مقدار ورودی پیدا نشود ، ، عبارت " no suggestion " به معنای بدون نتیجه صادر می شود . کد فایل php در جدول زیر تشریح شده است : [TABLE="class: ex"] [TR] [TD="class: prname"] کد فایل PHP [/TD] [TD="class: prdes, align: left"] < ?php // لیست نام های مثال $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"; // از صفحه مبدا q دریافت پارامتر $q = $_GET["q"]; // جستجو برای نام مورد نظر در صورت وارد کردن مقداری از سوی کاربر 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]; } } } } // اگر نتیجه ای پیدا نشد ، عبارت بدون نتیجه تعیین شود // یا اینکه جواب خروجی ارسال شود if ($hint == "") { $response="no suggestion"; } else { $response=$hint; } // ارسال نتیجه خروجی به صفحه مبدا - دستور ایجکس echo $response; ?> [/TD] [/TR] [TR] [TD="class: prname"] خروجی [/TD] [TD="class: prdes, align: center"] مشاهده خروجی مثال [/TD] [/TR] [/TABLE] منبع: developer1