1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

کاربرد Ajax در PHP

شروع موضوع توسط Amon Amarth ‏20/4/13 در انجمن Ajax

  1. کاربر ارشد

    تاریخ عضویت:
    ‏7/6/12
    ارسال ها:
    12,082
    تشکر شده:
    28,151
    امتیاز دستاورد:
    113
    جنسیت:
    مرد
    کاربرد 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
     
    یک شخص از این تشکر کرد.