AJAX (תכנות)

AJAX (ראשי תיבות של Asynchronous JavaScript And XML) היא טכניקה ליצירת יישומי רשת אינטראקטיביים המבוססים על קוד המורץ במסגרת דף HTML בודד, ולא כיישום מרובה דפים, כמקובל בסביבת ה-Web. מטרתה העיקרית של הטכניקה היא שיפור חוויית המשתמש והאצת מהירות הטעינה של דפי האינטרנט, מאחר שהיא מאפשרת לעדכן רק חלקים מבוקשים בדף האינטרנט, ללא צורך לטעון את הדף כולו מחדש במחשבו של המשתמש.

מטרה זו מושגת באמצעות יצירת תקשורת והחלפת מידע בין מחשב הלקוח לשרת דפי האינטרנט באמצעות קוד JavaScript. כלומר, האינטראקטיביות של יישומי AJAX מושגת באמצעות קוד המורץ בצד-הלקוח, זאת בניגוד לשימוש טהור בטכנולוגיות כמו PHP ו-ASP, שבהן הקוד מורץ בצד-השרת, וללקוח מגיע דף HTML סטטי, ולא יישום מלא. באופן זה נמנעת תקשורת מיותרת בין הלקוח לשרת, מופחת העומס בצד השרת ונפח המידע החוזר על עצמו אשר נשלח ללקוח פוחת.

כאשר משתמשים ב-AJAX עדיין יש צורך בטכנולוגיית צד-שרת כמו PHP או ASP, אלא שבמקום לשלוח דף HTML שלם, נשלח ללקוח רק המידע, והלקוח מפרש את המידע ומציג אותו למשתמש.

מרכיביה של טכניקת AJAX 

טכניקת AJAX משתמשת בשילוב של טכנולוגיות קיימות:
 XHTML (או HTML) ו-CSS לסימון ועיצוב מידע.
 שפת JavaScript למימוש הלוגיקה של היישום, לגישה אל השרת ולאינטראקציה עם המשתמש על ידי מניפולציה של ה-DOM.
 אובייקט XMLHttpRequest להחלפת נתונים עם השרת באופן אסינכרוני. בסביבות עבודה אחדות של AJAX ובסיטואציות מסוימות, נעשה שימוש בתגית iframe במקום באובייקט XMLHttpRequest להחלפת מידע עם שרת האינטרנט.
 JSON ו-XML משמשים לרוב כפורמט להעברת נתונים מהשרת, ולעיתים גם אליו. כל פורמט אחר יפעל גם כן, כולל HTML או CSV ("טבלאות" טקסט המופרדות על ידי פסיקים).

כמו DHTML, LAMP, או SPA, גם AJAX אינה טכנולוגיה כשלעצמה, אלא מונח שמתייחס לשימוש בקבוצת טכנולוגיות יחדיו. למעשה, כבר מופיעות טכנולוגיות נגזרות/מורכבות שמבוססות באופן ממשי על AJAX. כגון AFLAX.

דפדפנים תומכים

דוגמה לשירות מבוסס AJAX 

תיבת החיפוש, המופיעה במסך של אתר זה, מבוססת על AJAX - בעת התחלת הקלדתה של מילה לחיפוש, מוצגים למשתמש שמות ערכים המתחילים באותיות שהוקלדו, בהתאם למידע שנצבר בשרתי ויקיפדיה ובהתאם לאותיות שהוקלדו, באופן המאפשר למשתמש לבחור את הערך המתאים לו, או להמשיך ולהקליד. הדבר מתבצע ללא טעינה מחדש של הדף, אלא על ידי שליחה של האותיות שכבר הוקלדו, קבלת רשימת מילים מהשרת באופן א-סינכרוני מפעולת המשתמש, והצגת רשימת התוצאות למשתמש.

יתרונות וחסרונות 

יתרונות השיטה:

 מילוי טפסים ארוכים: כאשר משתמש מתבקש למלא טופס והשדות קשורים אחד לשני בקשרי גומלין, ניתן לממש קשרי גומלין אלה בגוף הטופס. דוגמה: אם נסמן שם מדינה תיפרס לפנינו לבחירתנו רשימת הערים שבה. 
 עדכון רציף של המידע המוצג, ללא צורך לרענן דף אינטרנט בכל פעם. כך למשל כאשר מנהלים שיחה בפורום ניתן לראות תגובות מיד כשהן מועלות על האתר.
 סקרי דעת קהל ודירוגים: התוכנה מקצרת את זמן הפעולה, כך שמצטמצם זמן המתנת הגולשים והיענותם גדלה. 
 התרעה על טעויות: מאפשר למשתמשים לגלות מיידית טעויות ולא להקליד נתונים מחדש (למשל: אם שם משתמש כבר קיים במערכת, תתקבל התרעה מיידית).
 השלמה אוטומטית של טקסטים: בעת הקלדת הטקסט המערכת מזהה מילים מוכרות ומשלימה אותן אוטומטית. לדוגמה: במנוע החיפוש של גוגל.

חסרונות השיטה: 

 תפקוד לחצן ה-Back של הדפדפן יכול להיפגע
 קושי בשמירת דפים במועדפים
 השהיית הרשת (network delay) יכולה לגרום לבעיית שימושיות
 יש צורך לאפשר JavaScript
 קושי בתאימות לתקני נגישות (כגון WAI)
 עומס על בסיס הנתונים (במקום שאילתה אחת, תבוצע שאילתה על כל גישת AJAX)

ראו גם 
 יישום רשת
 Dynamic HTML
 דף אינטרנט דינמי
 jQuery

קישורים חיצוניים 

 מדריך בסיסי ל-AJAX באתר W3Schools (באנגלית)
 סרטים מלאים להסברת AJAX
 מדריך מלא בעברית על AJAX עם ASP.NET
 מדריך בסיסי ל-AJAX באתר אינטרנט ישראל (בעברית)
 Ajax:Getting Started  מרכז פיתוח מוזילה
 Ajax Tutorial עם דוגמאות get, post, text XML .
מה זה AJAX וכיצד ניתן להשתמש בו בוורדפרס

ערכים שבהם תבנית בריטניקה אינה מתאימה
פיתוח יישומי ווב
XML
עיצוב אתרי אינטרנט