روش کار برنامههای کلاسیک وب چیزی شبیه این است: اکثر تعاملات کاربر با رابط کاربری باعث ارسال یک درخواست به سرور میشود. سرور پردازشهای لازم را انجام داده و سپس یک صفحه HTML به کلاینت بازمیگرداند. این مدل بر اساس هدف اصلی وب، یعنی ایفای نقش یک رسانه برای ابرمتن است. اما آنچه وب را برای ابرمتنها مناسب میکند، الزاماً آن را برای برنامههای نرمافزاری نیز مناسب نخواهد کرد[۲]. مسئله اینجاست که برنامههای وب برای کاربرد (Application)بودن طراحی نشدهاند و این باعث شده است که در بسیاری موارد کاربر را نادیده بگیرند.
فرض کنید کاربر میخواهد در یک فروشگاه الکترونیک، مشخصات جنس بعدی را ببیند، یا یک جنس را به سبد خرید خود اضافه کند. اتفاقی که میافتد این است که برای انجام هریک از این کارها، چون نیاز است با سرور ارتباط برقرار شود، باید یک درخواست به سرور ارسال شده، سرور پردازشهای لازم را انجام دهد و سپس یک صفحه به عنوان نتیجه بازگرداند. کاربر هم در این میان میتواند با انگشتانش بازی کند!
گرچه ما به صفحات وب، با همین روند انجام فعالیت هاعادت کرده ایم، اما واقعا روش کلاسیک برنامههای وب، گرچه از نظر تکنیکی مزایای بسیاری دارند، اما مشکلات عمدهای هم دارند. یکی از عمدهترین مشکلات صفحات وب را میتوان همروند کار کردن آنها دانست. (یعنی همین که وقتی درخواستی از سرور داریم، صفحه وب مقابلمان مسدود شده و باید منتظر بمانیم تا سرور کارش تمام شود و صفحهای به عنوان پاسخ برگرداند).
اکنون ببینیم Ajax چه پیشنهادی ارائه میدهد.
* قسمتهای مهم معماری پیشنهادی Ajax به این قرارند [۱]:
رخدادهای کوچک سمت سرور: اجزای درون یک برنامه وب میتوانند، درخواستهای کوچکی برای سرور ارسال کنند، اطلاعات مورد نیازشان را از سرور دریافت کنند، و هر قسمت از صفحه را که لازم است بر اساس DOM بهروز کنند، بدون اینکه تمام صفحه دوباره بارگذاری و ترسیم شود.
غیر همروند بودن: درخواستهایی که به سرور ارسال میشود، باعث مسدود شدن صفحهٔ درون مرورگر کلاینت نمیشوند. کاربر میتواند به کار با قسمتهای دیگر برنامه ادامه دهد و هنگامی که پاسخی از سرور دریافت شد، با بهروز کردن رابط کاربر، به کاربر اطلاع داده میشود.
عکسالعمل برای هر رخدادی: تقریباً میتوانیم برای تمام رخدادهایی که کاربر بوجود میآورد، با سرور ارتباط برقرار کنیم. مرورگرهای مدرن اکثر رخدادهایی را که سیستم عامل اجازه میدهد دریافت میکنند: کلیک کردن موس، حرکت موس روی شی، زدن یک کلید و غیره. هر رخدادی میتواند باعث ارسال یک درخواست به صورت غیر همروند برای سرور شود.