AJAX (Asynchronous JavaScript and XML), web uygulamalarının sunucularla asenkron veri alışverişi yapmasını ve alınan veriler doğrultusunda sayfanın tamamını yeniden yüklemeden belirli bölümlerini güncellemesini sağlayan bir web geliştirme tekniğidir. JavaScript, HTTP istekleri ve tarayıcının DOM (Document Object Model) arayüzü üzerine kurulan bu yaklaşım, kullanıcı etkileşimlerinin daha hızlı ve kesintisiz gerçekleşmesine yardımcı olur.
AJAX bir programlama dili, yazılım çatısı (framework) veya tek başına kullanılan bir kütüphane değildir. İstemci tarafında JavaScript, sunucu tarafında ise PHP, ASP.NET, Node.js, Python ve benzeri teknolojilerle birlikte kullanılabilir. Adında XML geçmesine rağmen günümüzde veri alışverişinde çoğunlukla JSON formatı tercih edilir. Modern web uygulamalarında HTTP istekleri için Fetch API yaygın olarak kullanılır; XMLHttpRequest (XHR) ise halen desteklenen bir diğer yöntemdir.

AJAX terimi, 2005 yılında Jesse James Garrett tarafından web uygulamalarında kullanılan asenkron veri alışverişi yaklaşımını tanımlamak amacıyla yaygınlaştırılmıştır. Bu yaklaşımın temel amacı, kullanıcı işlemlerine yanıt vermek için her defasında tüm web sayfasını yeniden yüklemek yerine yalnızca ihtiyaç duyulan veriyi sunucudan almak ve ilgili arayüz bölümünü güncellemektir.
AJAX işlemlerinde tarayıcı, JavaScript aracılığıyla sunucuya bir HTTP isteği gönderir. Sunucu isteği işler ve uygun bir yanıt döndürür. JavaScript, gelen yanıtı değerlendirerek web sayfasının ilgili bölümünü günceller. Bu sırada sayfanın tamamının yeniden yüklenmesi gerekmez.
Asenkron iletişim sayesinde tarayıcı, sunucudan yanıt beklerken diğer kullanıcı etkileşimlerini işlemeye devam edebilir. Bu yapı, özellikle veri yoğunluğu yüksek ve sık güncellenen web arayüzlerinde daha akıcı bir kullanım deneyimi oluşturur.
AJAX, birden fazla web teknolojisinin birlikte çalışmasıyla uygulanır. Kullanılan teknolojiler projenin mimarisine, veri formatına ve iletişim gereksinimlerine göre değişebilir.
Modern web geliştirme projelerinde AJAX işlemleri için genellikle Fetch API tercih edilir. Fetch API, HTTP isteklerini Promise yapısı üzerinden yönetir ve async/await kullanımıyla daha okunabilir kodlar oluşturulmasını sağlar.
Aşağıdaki örnekte Fetch API kullanılarak bir API uç noktasından JSON formatında veri alınmaktadır. Sunucudan dönen yanıt kontrol edilir ve başarılı olması durumunda JSON verisi işlenir.
async function veriGetir() {
try {
const response = await fetch("/api/products");
if (!response.ok) {
throw new Error(`HTTP Hatası: ${response.status}`);
}
const data = await response.json();
console.log(data);
} catch (error) {
console.error("Veri alınamadı:", error);
}
}
veriGetir();
Bu örnekte fetch() fonksiyonu sunucuya GET isteği gönderir. response.ok ile HTTP yanıtının başarılı olup olmadığı kontrol edilir. Yanıt uygun durumdaysa response.json() metodu veriyi JavaScript nesnesine dönüştürür.
AJAX yalnızca sunucudan veri almak için değil, kullanıcı tarafından oluşturulan verileri sunucuya iletmek için de kullanılır. Aşağıdaki örnekte JSON formatındaki bir veri POST yöntemiyle API uç noktasına gönderilir.
async function veriGonder() {
const formData = {
name: "Example Product",
price: 250
};
try {
const response = await fetch("/api/products", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(formData)
});
if (!response.ok) {
throw new Error(`HTTP Hatası: ${response.status}`);
}
const result = await response.json();
console.log("Sunucu yanıtı:", result);
} catch (error) {
console.error("Veri gönderilemedi:", error);
}
}
veriGonder();
POST isteğinde gönderilecek veri JSON.stringify() ile JSON metnine dönüştürülür. Content-Type başlığı, sunucuya gönderilen içeriğin JSON formatında olduğunu bildirir. Sunucu tarafında ise gelen verinin doğrulanması ve uygun şekilde işlenmesi gerekir.
Fetch API modern projelerde yaygın olarak tercih edilse de XMLHttpRequest, mevcut uygulamalarda ve eski kod tabanlarında kullanılmaya devam etmektedir. XMLHttpRequest üzerinden GET isteği göndermek için aşağıdaki yöntem uygulanabilir.
const xhr = new XMLHttpRequest();
xhr.open("GET", "/api/products", true);
xhr.onload = function() {
if (xhr.status >= 200 && xhr.status < 300) {
const data = JSON.parse(xhr.responseText);
console.log(data);
} else {
console.error("HTTP Hatası:", xhr.status);
}
};
xhr.onerror = function() {
console.error("İstek sırasında ağ hatası oluştu.");
};
xhr.send();
Bu örnekte XMLHttpRequest nesnesi oluşturulur ve open() metodu ile GET isteği tanımlanır. Üçüncü parametrenin true olması, isteğin asenkron olarak gerçekleştirilmesini sağlar. Sunucudan yanıt geldiğinde onload olayı çalışır ve yanıtın HTTP durum kodu kontrol edilir.
AJAX, web sayfalarında belirli verilerin veya arayüz bileşenlerinin tam sayfa yenilemesi olmadan güncellenmesini gerektiren işlemlerde kullanılır. Özellikle kullanıcı etkileşiminin yoğun olduğu web uygulamalarında veri aktarımını ve arayüz güncellemelerini daha verimli hale getirebilir.
AJAX, kullanıcı formu doldururken e-posta, kullanıcı adı veya benzeri alanların sunucu üzerinden kontrol edilmesini sağlar. Böylece formun tamamı gönderilmeden belirli alanların geçerliliği kontrol edilebilir. Ancak güvenlik açısından tüm doğrulama işlemleri sunucu tarafında da gerçekleştirilmelidir.
Arama alanına girilen karakterlere göre sunucudan sonuç alınabilir ve sonuç listesi dinamik olarak güncellenebilir. Ürün, içerik veya kayıt listeleri kategori, tarih, fiyat ve benzeri ölçütlere göre tam sayfa yenilemesi olmadan filtrelenebilir ve sıralanabilir.
Uzun listelerde sonraki kayıtların veya içeriklerin sayfanın tamamı yenilenmeden yüklenmesi sağlanabilir. Bu yöntem özellikle ürün katalogları, haber sayfaları, blog arşivleri ve yönetim panellerinde kullanılabilir.
Kullanıcı puanları, beğeniler ve değerlendirme sonuçları sunucuyla veri alışverişi yapılarak arayüzde güncellenebilir. Böylece her işlem sonrasında sayfanın yeniden yüklenmesine gerek kalmaz.
Blog yorumları, kullanıcı mesajları ve bildirimler AJAX aracılığıyla gönderilebilir ve listelenebilir. Belirli aralıklarla sunucudan veri alınarak bildirim alanlarının güncellenmesi de mümkündür.
Sepet miktarı, ürün varyasyonları, fiyat bilgileri ve stok durumu gibi veriler dinamik olarak güncellenebilir. AJAX, ödeme öncesi sepet işlemleri ve kullanıcı etkileşimlerinin yönetilmesinde de kullanılabilir. Ödeme ve sipariş gibi kritik işlemlerde sunucu tarafı doğrulama ve güvenlik kontrolleri zorunludur.
Harita uygulamalarında konum, adres ve ilgili kayıtlar sunucudan alınarak görüntülenebilir. Uygun sunucu ve tarayıcı desteğiyle dosyalar sayfa yenilemesi olmadan yüklenebilir ve yükleme ilerlemesi takip edilebilir.
AJAX, belirli aralıklarla sunucuya istek göndererek güncel verilerin alınmasını sağlayabilir. Bu yöntem polling (periyodik sorgulama) olarak adlandırılır. Örneğin bir bildirim paneli, belirli zaman aralıklarında sunucuyu kontrol ederek yeni bildirimleri görüntüleyebilir.
Ancak AJAX tek başına sürekli ve anlık çift yönlü iletişim sağlayan bir protokol değildir. Sohbet uygulamaları, canlı veri akışları ve anlık güncellemeler gibi ihtiyaçlarda WebSocket veya Server-Sent Events (SSE) gibi teknolojiler daha uygun olabilir. Kullanılacak iletişim yöntemi, uygulamanın gerçek zamanlılık ve veri aktarım gereksinimlerine göre belirlenmelidir.
AJAX, yalnızca ihtiyaç duyulan verilerin aktarılmasını ve sayfanın ilgili bölümlerinin güncellenmesini sağlayarak gereksiz veri transferini azaltabilir. Bu yaklaşım, özellikle kullanıcı etkileşimlerinin yoğun olduğu uygulamalarda daha akıcı bir deneyim oluşturulmasına yardımcı olur. Bununla birlikte AJAX kullanılması tek başına web sitesinin daha hızlı çalışacağını garanti etmez.
Her kullanıcı etkileşiminde sunucuya istek göndermek yerine debounce, throttle ve önbellekleme gibi yöntemler kullanılabilir. Bu teknikler gereksiz istekleri azaltarak hem istemci hem de sunucu kaynaklarının daha verimli kullanılmasını sağlar.
Sunucudan yalnızca gerekli alanların alınması, uygun veri formatlarının kullanılması ve API yanıtlarının optimize edilmesi performansı olumlu etkileyebilir. Sunucu yanıt süresi, ağ koşulları ve JavaScript işlemleri de toplam kullanıcı deneyimini doğrudan etkiler.
JavaScript, web tarayıcılarında çalışan bir programlama dilidir. AJAX, JavaScript ve HTTP iletişimi gibi teknolojilerden yararlanarak sunucuyla asenkron veri alışverişi yapılmasını sağlayan bir geliştirme yaklaşımıdır. Fetch API ve XMLHttpRequest ise bu iletişimi gerçekleştirmek için kullanılan JavaScript arayüzleridir.
JavaScript; web sayfasındaki etkileşimleri yönetmek, DOM üzerinde değişiklik yapmak, kullanıcı girdilerini işlemek ve uygulama mantığını çalıştırmak gibi geniş bir kullanım alanına sahiptir. AJAX ise bu işlemlerin sunucuyla asenkron veri alışverişi gerektiren bölümünü ifade eder. Dolayısıyla AJAX, JavaScript'in alternatifi değildir; JavaScript kullanılarak uygulanır.
Fetch API, modern JavaScript uygulamalarında HTTP isteklerini yönetmek için kullanılan Promise tabanlı bir arayüzdür. async/await desteği sayesinde istek ve yanıt işlemlerinin daha okunabilir şekilde yazılmasını sağlar. Yeni web projelerinde genellikle tercih edilen yöntemdir.
XMLHttpRequest, tarayıcıda asenkron HTTP istekleri gerçekleştirmek için kullanılan yerleşik bir JavaScript API'sidir. Fetch API yaygınlaşmış olsa da mevcut projelerde, eski kod tabanlarında ve dosya yükleme ilerlemesinin izlenmesi gibi özel gereksinimlerde kullanılmaya devam etmektedir.
AJAX, özellikle dinamik içerik ve kullanıcı etkileşimi gerektiren web uygulamalarında etkili bir veri iletişim yaklaşımıdır. Ancak her işlem için AJAX kullanılması gerekli değildir. Sayfa yönlendirmeleri, arama motorlarının erişmesi gereken temel içerikler ve geleneksel form gönderimleri gibi işlemlerde sunucu taraflı sayfa oluşturma yöntemleri daha uygun olabilir.
Yeni projelerde Fetch API, JSON tabanlı veri iletişimi, REST API mimarisi ve güvenli sunucu doğrulama yöntemleri birlikte değerlendirilebilir. Sürekli veri akışı gerektiren uygulamalarda WebSocket veya SSE gibi teknolojiler tercih edilebilir. Doğru teknoloji seçimi; performans, güvenlik, erişilebilirlik, bakım maliyeti ve projenin mimari gereksinimleri dikkate alınarak yapılmalıdır.
Pzt - Cum: 09:00 - 18:00
info@birnc.com.tr
+90 (212) 912 2155 Pbx
Beşi̇ktaş - İstanbul | Türkiye