ایجکس چیست؟
تکنولوژی ایجکس (AJAX) یک تکنیک پرکاربرد در طراحی سایت است که بهبود خدمترسانی به کاربران را در سرویسهای مختلف سبب میشود. AJAX مخفف عبارت Asynchronous JavaScript And XML می باشد. ایجکس یک زبان برنامه نویسی نیست. بلکه یک مفهوم است که میاد روشی را برای صفحه های وب معرفی می کند که بدون نیاز به رفرش شدن درخواست به سرور بفرستند و اطلاعات بخشی از صفحه را بروز رسانی کنند.

حتما هنگامی که جستجویی در گوگل انجام دادهاید مشاهده کردهاید که به محض تایپ کلمات؛ پیشنهادات مشابهی توسط گوگل به شما ارائه میشود. این امکان در پشت صحنه توسط تکنولوژی AJAX برای شما فراهم میشود و در حقیقت ایجکس است که این نتایج را به سرعت برای شما فراخوانی کرده و نمایش میدهد. یا زمانی که از سرویس Gmail استفاده میکنید و بدون رفرش کردن صفحه ایمیلهای جدید را مشاهده میکنید از این تکنولوژی بهره میبرید. این تکنولوژی مورد استفاده در سایتها و سرویسهای متعددی است که در ادامه در مورد نحوه کاربرد این تکنولوژی در آنها به طور مفصل صحبت خواهیم کرد.
نحوه ی کارکرد ایجکس
کارکرد این این تکنولوژی طی چند مرحله و با ایجاد یک event آغاز میشود. برای مثال با کلیک روی یک دکمه یا لینک و یا فوکوس برای تایپ در فیلد نام کاربری در یک فرم ثبت نام میتواند به عنوان یک رویداد برای اجرای کدهای جاوا اسکریپت جهت ارسال دادههای بخش معینی به سرور تعیین شود. مرورگر به کمک جاوا اسکریپت یک شی از XMLHttpRequest یا XHR میسازد. این شئ یک API یا Application Programming Interface است که میتواند با جاوا اسکریپت، انواع مرورگرها و زبانهای دیگر به منظور انتقال و مدیریت دادههای XML ارسالی و دریافتی از مرورگرها از طریق HTTP مورد استفاده قرار گیرد. به صورت خلاصه میتوان گفت که این شی برای ایجاد یک کانال ارتباطی مستقل بین مرورگر کاربر و سرور مورد استفاده قرار میگیرد.

ایجکس از طریق شی ساخته شده، دادهها و اطلاعات مورد نظر را به سرور ارسال میکند. در سرور درخواست، دریافت و پردازش میشود. سپس نتیجهی نهایی آن به مرورگر بازگردانده میشود. مرورگر پاسخ را به کمک جاوا اسکریپت دریافت و بر اساس نحوهی طراحی برنامهنویس وب، در بخشی که از طریق شناسهها برایش مشخص شده است نمایش میدهد.
دلیل استفاده از ایجکس Ajax
برنامههای تحت وب که از Ajax استفاده میکنند خصوصیات زیر را دارند:
استفاده مولفههای آشنا و تعاملی رابط کاربری مانند نشان دهنده پیشرفت( progress bar ،tooltip و همچنین پنجرههای pop-up)
کارایی در برنامههای وب فرم بالا است. زیرا بیشتر بخشهای پردازشی صفحه وب میتوانند در مرورگر مدیریت شوند.
به روز رسانی مقطعی صفحه (partial update) که تنها بخش تغییر یافته صفحه refresh میشود.
یکپارچه سازی بخشهای client-side برنامه با خدمات برنامه سرور، بخصوص در فرآیند اعتبار سنجی فرمها، تعیین نقش کاربران و پروفایل کاربران
توانایی سفارشی سازی کنترلهای سرور به منظور استفاده از ظرفیتهای client
پشتیبانی از بیشتر مرورگرهای معروف، مانند IE، فایرفاکس، کروم و سافاری
پاپآپها (Popup) بیشتر اوقات آزار دهنده هستند و مرورگرها اکثرا آنها را مسدود میکنند. بنابراین یک جایگزین خوب و جالب به جای پاپآپ در سایت، لایتباکسها هستند که یکی از مفیدترین موارد استفاده تکنولوژی ایجکس است.
مزایای ایجکس
چند نمونه از مزایای ایجکس را در پائین مورد بحث قرار داده ایم
رخدادهای کوچک سمت سرور
اجزای درون یک برنامه وب میتوانند، درخواستهای کوچکی برای سرور ارسال کنند، اطلاعات مورد نیازشان را از سرور دریافت کنند، و هر قسمت از صفحه را که لازم است بر اساس DOM بهروز کنند، بدون اینکه تمام صفحه دوباره بارگذاری و ترسیم شود.
غیر همروند بودن
درخواستهایی که به سرور ارسال میشود، باعث مسدود شدن صفحهٔ درون مرورگر کلاینت نمیشوند. کاربر میتواند به کار با قسمتهای دیگر برنامه ادامه دهد و هنگامی که پاسخی از سرور دریافت شد، با بهروز کردن رابط کاربر، به کاربر اطلاع داده میشود.
عکسالعمل برای هر رخدادی
تقریباً میتوانیم برای تمام رخدادهایی که کاربر بوجود میآورد، با سرور ارتباط برقرار کنیم. مرورگرهای مدرن اکثر رخدادهایی را که سیستمعامل اجازه میدهد دریافت میکنند: کلیک کردن موس، حرکت موس روی شی، زدن یک کلید و غیره. هر رخدادی میتواند باعث ارسال یک درخواست به صورت غیر همروند برای سرور شود.

یکی از مزایای AJAX؛ بهدلیل عدم نیاز به بارگذاری مجدد كل یك صفحه وب، مقدار دادههایی كه لازم است برای تكمیل یك Interaction میان كاربر و سایت مبادله شود، به شدت كاهش مییابد و این به معنی افزایش محسوس سرعت نرمافزارهای تحت وب، سهولت بهكارگیری اینترفیسهای مبتنی بر ایجكس و كاربرپسندترشدن آنها میشود. به همین دلیل این روزها اكثر پورتالهای بزرگ (مانند Yahoo) مشغول طراحی اینترفیسهای مبتنی بر Ajax هستند. اما امروزه اغلب مرورگرهای مهم و شناختهشده (از جمله فایرفاكس) از آن پشتیبانی میكنند و دیگر یك فناوری محدود به اینترنت اكسپلورر نیست.
معایب ایجکس Ajax
البته هر فناوری جدید در کنار مزایا، ممکن است نقاط ضعف یا کمبودهایی هم داشته باشد. در اینجا به برخی از مشکلات تکنولوژی Ajax اشاره میکنیم:
هر مرورگری که از JavaScript یا سیستم تقاضای XMLHttp پشتیبانی نکند یا اگر کاربر این قابلیت را در مرورگر خود غیر فعال کرده باشد، امکان استفاده درست از تکنولوژی Ajax وجود نخواهد داشت. بعضی از دستگاههای دیجیتال مانند گوشیهای هوشمند و PDAها نیز ممکن است پشتیبانی کاملی از این فناوری نداشته باشند. البته این موضوع در حال بررسی بوده و در آیندهای نزدیک به طور کامل رفع خواهد شد. با توجه به ساختار تکنولوژی Ajax و محتوای پویای آن، ممکن است Crawler موتور جستجو به خوبی نتواند این صفحات را پردازش کرده و بخواند. در نتیجه ممکن است صفحاتی که از Ajax استفاده میکنند در برخی از موتورهای جستجو رتبه خوبی کسب نکنند.
از نظر برنامه نویسی حفظ و نگهداری، اشکال زدایی و تست صفحاتی که چنین محتوایی دارند دشوار خواهد بود. برخلاف صفحات معمولی که در آنها کاربر با فشردن دکمه یا آیکون Back در مرورگر میتواند به صفحه قبلی بازگردد، در Ajax امکان بازگشت به صفحه قبل وجود ندارد، البته این مسئله در HTML5 تا حدودی حل شده است. هنگامی که شما از Ajax برای تغییر داینامیک محتوای صفحه وب استفاده میکنید، امکان مشاهده محتوای اضافه شده به صفحه را در بخش view source نخواهید داشت زیرا محتوای صفحه همان چیزی است که در ابتدا از سرور خوانده شده بود، به این ترتیب پس از رفرش مجدد صفحه نیز محتوا به همان حالت قبلی باز میگردد.
جمع بندی کلی
Ajax یک تکنولوژی بسیار مفید و کاربردی است. اگر میخواهید بخشی از محتوای سایت شما بروز شده اما کل صفحه Refresh نشود میتوانید از Ajax استفاده کنید. یعنی به کمک این تکنیک نیازی نیست برای یک تغییر کوچک کل صفحه دوباره بارگیری شود. این کار مزایای زیادی مانند تجربه کاربری بهتر و صرفهجوبی در مصرف پهنای باند را به همراه دارد.

البته برخی از معایب آن را هم باید مدنظر داشته باشید. ممکن است Ajax موتور جستجو را گمراه کرده و موتور جستجو هنگام Crawl کردن صفحات دچار مشکل شود. یا احتمال دارد بعضی از دستگاهها به خوبی از این تکنولوژی پشتیبانی نکنند.
همچنین میتوانید مطلب وردپرس و مزایای استفاده از آن در طراحی وب سایت را در اینجا مشاهده نمایید.
فوق العاده و کامل بود، من به زبان php برنامه مینویسم ولی هیچگاه درک کاملی از ajax نداشتم ممنونم