AJAX(Asynchronous JavaScript and XML), sayfayı tekrardan yüklemeye gerek kalmadan sunucuda işlem yapabilmeyi ve sayfada görünür değişiklikler yapmayı sağlayan teknolojidir.
Nasıl okunması gerektiği konusunda bir genel uzlaşma olmamakla birlikte çoğunlukla yazıldığı gibi 'ajaks' olarak okunurken, kimileri tarafından aynı yazımlı isme iye futbol takımı örnek gösterilerek 'ayaks' olarak okunmaktadır. İngilizce'de 'ey-ceks' olarak okunur.
En yaygın kullanım alanı, sayfayı yeniden yüklemeye gerek kalmaksızın, sayfada görünür değişiklikler yapmaktır. XMLHttpRequest kullanılarak birden fazla bağımsız işlem yapılabilir. Bazı bilişim uzmanları, AJAX'ın HTML ve XML'den sonra en yenilikçi İnternet yazılımı olduğunu ve Web 2.0.'ı sonlandırıp, 3. evrenin kapısını açtığını öne sürmüşlerdir.
Asynchronous JavaScript and XML sözcüklerinin kısaltması olan
Ajax, etkileşimli (interaktif) web uygulamaları yaratmak için kullanılan bir web programlama tekniğidir. Temel amacı arka planda sunucuyla ufak miktarda veri değişimi sayesinde sayfayı daha hızlı güncellenebilen web sayfaları yapmak, dolayısıyla kullanıcının istediği her anda bütün web sayfasını güncellemek derdinden kurtulmaktır. Bu da web sayfasının etkileşimini, hızını ve kullanılabilirliğini artırmak demektir.
Ajax tekniği aşağıdaki teknolojileri kullanır:
- Bilgiyi biçimlendirmek ve görüntüsünü değiştirmek için XHTML (ya da HTML) ve CSS.
- Görüntülenecek bilgiyi dinamik olarak göstermek ve onunla etkileşimli çalışmak için özellikle JavaScript ve JScript gibi ECMAScript olan kullanıcı tarafındaki bir scripting dili yardımıyla erişilebilen DOM.
- Web sunucusu ile bilgi değiş tokuşunda kullanılan XMLHttpRequest objesi. Bazı Ajax frameworklerde ve bazı durumlarda web sunucusuyla bilgi alışverişi için XMLHttpRequest yerine IFrame de kullanılır; diğer uygulamalarda ise dinamik olarak eklenen JavaScript TAG'leri de kullanılabilir.
- Kullanıcıyla sunucu arasındaki bilgi alışverişlerinde genelde XML formatı kullanılır. Önceden hazırlanmış HTML, düz metin, JSON ve hatta EBML dahi olmak üzere herhangi bir format da kullanılabilir. Bu tip dosyalar sunucu tarafında herhangi bir script (PHP, ASP vs.) ile bile üretilmiş olabilir.
- DHTML, LAMP ve SPA gibilerin aksine Ajax kendi başına bir teknoloji değildir, ancak terim birçok teknolojinin bir bütün olarak kullanıldığını ifade eder.
Avantajları
Bantgenişliği ayarlama
HTML'i Ağ tarayıcısı (browser) programında oluştururken, JavaScript işlemlerini ve işlenecek verileri kullanırken, sunucudan gelen sayfa bilgisi gerektiğinden daha az yer tuttuğundan dolayı Ajax web sayfalarının görece olarak daha hızlı yüklendiği gözlenebilir. Bu tekniğe örnek olarak bilginin birden çok sayfadan oluştuğu büyük miktarda veriyi ele alalım. Ajax ile sayfanın HTML kodu, örneğin bir tablo kontrolü ya da ilgili TD, TR etiketleri (tag) ağ tarayıcısı (browser) içinde oluşturulabilir, dolayısıyla dökümanın ilk sayfasını indirmeye gerek kalmaz
İçeriğin "isteğe bağlı olarak yüklenmesine" ek olarak, bazı web uygulamaları ilk önce Olay Yöneticilerini (event handler), ardından ilgili fonksiyonları indirir. Bu teknik, karmaşık mekanizması ve fonksiyonu olan web uygulamalarının gereksinim duyduğu yüksek miktarda bantgenişliği tüketimini önemli ölçüde hafifletir.
Kullanıcı Arabirimi
Ajax kullanmak için en önemli neden kullanıcı arabirimindeki iyileştirmedir. Ajax kullanan sayfalar tipik bir web sayfasından çok, tarayıcının çalıştığı bilgisayarda bir stand-alone uygulama gibidir. Sayfanın tamamının güncellenmesinin gerektiği linklere tıklandığı zaman işlemin epeyi "ağır(hantal)" olduğu hissedilir, ancak Ajax ile sayfa çoğu kez dinamik olarak güncellenebilir..
Örnek
Fisheye interface example Türkçe bir ajax makalesi
Dezavantajlar
Google ve benzeri site indeksleyen robotlar tarafindan henuz ikinci plandadir ve en büyük dez avantajı budur. Ancak içeriğe uygun site haritaları ile içeriğin arama motorları tarafından indexlenmesi sağlanabilir. Bu konuda en iyi yöntem sitenin arama motorları için tasarlanmış ayrı bir sürümünü oluşturmaktır. Herhangi bir server-side programlama dili ile senkronize edildiğinde genelde yazılması gerken kod miktarını neredeyse iki katına çıkarır. Bunun sebebi ajax ile yazılmış fonksiyon ya da class'ın talep cevap sistemi ile çalışması gösterilebilir. Ajax uygulamasının gönderdiği her bir talep için server tarafında cevap verecek bir dosya olması gerekmektedir.
Tarayıcı Uyumluluğu
Dinamik olarak oluşturulan sayfalar tarayıcının önceden işlediği sayfaları yöneten mekanizmalarına kendini otomatik olarak kaydetmez, bu yüzden tarayıcının "Geri" tuşuna basıldığında istenen sayfa elde edilemeyebilir.
Geliştiriciler bu problemi çözmek için değişik çözümler geliştirmiştir. Bu tip çözümler genelde tarayıcının Geri tuşu kullanıldığında geçmiş listesiyle ilgili işlemleri çalıştıran görünmez IFRAME'leri kullanır. Örneğin Google Maps, arama suretiyle istenen bilgileri önce görünmez bir IFRAME içinde işler, sonra sayfanın görünen kısmında ilgili elemanın içine yerleştirir. World Wide Web Consortium (W3C)
iframe elemanını XHTML 1.1 Çalışmasına eklememiştir, bunun yerine
object elemanını önermiştir.
Yanıt Verme Süresiyle Ilgili Kısıtlamalar
Ajax'la geliştirme esnasında network gecikmesi ya da kullanıcı isteğine sunucunun verdiği yanıt arasında geçen süre özellikle dikkate alınmalıdır. Gecikme denen şey, kullanıcıya bilginin düzgün gönderilmemesi ya da XMLHttpRequest objesinin doğru bir şekilde kullanılmaması durumunda kullanıcının beklemediği ya da anlamadığı bir olaydır.
Buna ek olarak, bütün bir sayfa render edilirken sayfanın içeriği değişimi esnasında insan gözünün adaptasyonu için geçen belli bir süre vardır. Ekranın değişiminin daha ufak adımlarla ayarlanması yapılmazsa bu gecikme daha çok hissedilir. Kullanıcıya arkaplanda bir işlemin yapıldığı ya da içeriğin yüklenmeye çalışıldığını söylemek için kullanılan görsel efektler bu tip gecikme problemlerine çözüm olarak önerilmektedir.
Genel olarak network gecikmesinin zamana bağlı olarak değişmesi gibi gecikmenin potansiyel etkileri, halihazırda bulunan açık kaynak Ajax araçlarının ve framework'lerin hiçbirince henüz çözümlenememiştir..
Arama Motorlarıyla Ilgili İyileştirmele
Arama motorlarinca endekslenmesi gereken bilgileri yüklemek için Ajax kullanılan web sisteleri, Ajax işlevselliği için gerekli olan JavaScript kodunu arama motorlarının genelde çalıştırmamasından dolayı, arama motorlarının okuyabileceği bir formatta ve bir URL linki şeklinde bilgi koymalıdır. Bu problem Ajax'a özgü değildir, çünkü örneğin form gönderme (form submit) sonrası gereken tam sayfa güncellemesi gibi dinamik sayfalar üreten sitelerde de bu problem vardır (bu gibi problemler genelde hidden web olarak adlandırılır).
Erişilebilirlik
Web uygulamalarında Ajax teknolojilerini kullanmak, Bilgisayar Erişilebilirliği konusunda araçlar geliştiren tasarımcılar için birçok sorunu beraberinde getirmektedir. Buna ek olarak Section 508 gibi Amerikan Uyum Standartlarına sıkı bir şekilde uyulması gerektiği ABD devlet destekli birçok geliştirme projeleri bulunmaktadır. Bu standartlara uyulmaması, bazı durumlarda bilgisayar uyumluluğuyla ilgili birçok iş anlaşmalarının iptaline ve hukuki problemlerin doğmasına neden olmaktadır.
Bu yüzden Ajax'la yapılmış çözümlerin büyük bir kısmı grafik tabanlı tarayıcılara hitap ettiğinden dolayı, geliştiriciler başka platform ve tarayıcı kullanıcılarının da gereksinimlerini karşılamak zorundadır.
Web tasarımcıları, web tarayıcısının bütün sayfayı renderlemesine gerek kalmaksızın veri işlemeye olanak tanındığı durumlarda bazen web sayfasının sadece belli kısımları için Ajax'ı kullanabilir. Ajax kullanamayanlar ise bütün bir sayfayı yenilemeye ve yüklemeye devam edebilmeli; geliştiriciler ise Ajax'ı destekleyen taracılarla daha teknik olanaklar sunsa da -bütün erişilebilirlik konuları dahil olmak üzere- Ajax içermeyen ortamlardaki kullanıcıların yeteneklerini kısıtlamamalıdır.