**AJAX** (İngilizce: **Asynchronous JavaScript and XML**, Türkçe: *Eşzamansız JavaScript ve XML*), İnternet sayfalarında JavaScript ve `XMLHttpRequest` kullanımı ile etkileşimli uygulamalar yaratan tekniğin adıdır.

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ı ismiyle futbol takımı örnek gösterilerek *ayaks* olarak okunmaktadır. İngilizcede *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üncelleyebilen 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 betik dili (İngilizce: *scripting*) 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 etiketleri (İngilizce: *tag*) 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 (İngilizce: *plain text*), 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.

Tarihsel bilgi
--------------

Hazırdaki bir web sayfasına, tamamen yeniden yüklemeden asenkron (eş zamanlı olmayan) içerik ilave etme teknikleri 1996'da Internet Explorer'la birlikte gelen `iframe` ve 1997'de Netscape (Mozilla'nın ilk dönemlerinde geliştirilmesi durdurulmuştur) ile gün yüzüne çıkan `layer` öğesi kadar eskidir. Her iki öğe de herhangi bir harici URL'yi alarak esas sayfayı değiştirebilen `src` özniteliğine sahipti. Sonraları, tarayıcı tarafında çalışan bu teknolojiler DHTML adı altında anılmaya başladı. Macromedia firmasının Flash uygulaması da 4. sürümünden itibaren XML ve CSV formatındaki dosyaları sayfa yenilemeye gerek kalmaksızın uzak sunucudan yükleme özelliğini bulunduruyordu.

Microsoft's Remote Scripting (or MSRS, introduced in 1998) acted as a more elegant replacement for these techniques, with data being pulled in by a Java applet with which the client side could communicate using JavaScript.. This technique worked on both Internet Explorer version 4 and Netscape Navigator version 4 onwards. Microsoft then created the `XMLHttpRequest` object in Internet Explorer version 5 and first took advantage of these techniques using `XMLHttpRequest` in Outlook Web supplied with the Microsoft Exchange Server 2000 release.

The Web development community, first collaborating via the *microsoft.public.scripting.remote* newsgroup and later through blog aggregation, subsequently developed a range of techniques for remote scripting in order to enable consistent results across different browsers. In 2002, a user-community modification to Microsoft Remote Scripting was made to replace the Java applet with XMLHttpRequest.

Remote Scripting Frameworks such as ARSCIF surfaced in 2003 not long before Microsoft introduced Callbacks in ASP.NET.

In addition, the World Wide Web Consortium has several Recommendations that also allow for dynamic communication between a server and user agent, though few of them are well supported. These would include:

* The object element defined in HTML 4 for embedding arbitrary content types into documents, (replaces inline frames under XHTML 1.1)
* The Document Object Model (DOM) Level 3 Load and Save Specification 16 Aralık 2006 tarihinde Wayback Machine sitesinde arşivlendi.

Avantajları ve dezavantajları
-----------------------------

Bant genişliğini ayarlamak;

HTML’yi 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.

İç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 bant genişliği tüketimini önemli ölçüde hafifletir.

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 tarayıcı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.

Ajax Nerede Kullanılır
----------------------

Ajax hemen hemen web’de birçok şey için kullanılır. Bunun bir örneği ise Google Maps. Kullanıcı sayfadakı haritaya tıklayıp resmi çektiği an, bütün sayfa yeniden yüklenmeden bilgi anında gösterilir. Bütün bunlar Ajax’ın senkron özelliği tarafından yapılmaktadır. Ajax aynı zamanda Gmail’de de kullanılmaktadır. Bilginin yüklenmesi için sayfanın tamamının yeniden yüklenmesi gerekmemektedir. Yeni posta geldiğinde, hemen otomatık olarak gelen kutusuna eklenir. Bu kullanıcının yenileme düğmesine sürekli olarak tıklaması ihtiyacını önler. Google Translate'de de Ajax kullanmaktadır. Kullanıcılar bir yazıyı bir dilden başka bir dile tercüme etmek için yazmaya başladıkları zaman, Ajax hemen diğer dildeki anlamı aynı sayfada gösterir.

Kaynakça
--------

1. ↑  "HTTPRequest-enabled RS". microsoft.public.scripting.remote newsgroup. 18 Haziran 2002. 29 Mayıs 2010 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Ağustos 2006.
2. ↑  "ARSCIF: A Framework for Asynchronous Remote–Script Callback Invocation". Sebastiano Vigna. 6 Eylül 2013 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Ağustos 2006.
3. ↑  "Cutting Edge: Script Callbacks in ASP.NET". MSDN Magazine. 8 Ağustos 2004. 4 Aralık 2008 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Ağustos 2006.

Ayrıca bakınız
--------------

* Ajax framework
* Comet (programlama)
* HTTP streaming
* Progressive enhancement
* Reverse Ajax
* Rich Internet application
* Single usage application
* Web 2.0
* XMLHttpRequest

Örnekler
--------

* Google Maps13 Ekim 2014 tarihinde Wayback Machine sitesinde arşivlendi.
* Gmail29 Eylül 2005 tarihinde Wayback Machine sitesinde arşivlendi.
* Google Pages 25 Eylül 2004 tarihinde Wayback Machine sitesinde arşivlendi.
* Mint 19 Eylül 2020 tarihinde Wayback Machine sitesinde arşivlendi.
* Google Suggest 4 Kasım 2005 tarihinde Wayback Machine sitesinde arşivlendi.
* ZK Demo 9 Nisan 2006 tarihinde Wayback Machine sitesinde arşivlendi.

Dış bağlantılar
---------------

* PHP ile Ajax kullanımı 23 Ağustos 2010 tarihinde Wayback Machine sitesinde arşivlendi.
* Ajax'ın Temelleri 5 Mayıs 2008 tarihinde Wayback Machine sitesinde arşivlendi.
* AJAX category on the Open Directory Project.
* ASP'de Ajax örnekleri

### AJAX kütüphaneleri

* MIT.FESA Hızlı, Kolay ve Akıllı AJAX nesnesi.
* PHPLiveX
* EceX[*ölü/kırık bağlantı*]
* jQuery14 Ağustos 2009 tarihinde Wayback Machine sitesinde arşivlendi.
* ajaks
* dojo 29 Mayıs 2006 tarihinde Wayback Machine sitesinde arşivlendi.
* civciv-lib
* moofx 1 Haziran 2006 tarihinde Wayback Machine sitesinde arşivlendi.
* behavior 29 Mayıs 2006 tarihinde Wayback Machine sitesinde arşivlendi.
* prototype
* Sardalya - (Sar)mal (D)inamik (Al)t(ya)pısı (İngilizce) 18 Mayıs 2006 tarihinde Wayback Machine sitesinde arşivlendi.
* scriptaculous1 Aralık 2010 tarihinde Wayback Machine sitesinde arşivlendi.
* XScript[*ölü/kırık bağlantı*]
* Xajax
* Microsoft ASP.NET Ajax25 Temmuz 2008 tarihinde Wayback Machine sitesinde arşivlendi.

| * g
* t
* d
Web Teknolojileri |
| --- |
| Programlama | PHP **·**  Python **·**  Ruby **·**  ASP **·**  ASP.NET **·**  JavaServer Pages |
| İşaretleme Dilleri | HTML **·**  DHTML **·**  XHTML **·**  XML |
| Web 2.0 | Web 2.0 **·**   Ajax **·**  JQuery |
| Web 3.0 | Anlamsal ağ |
| Geliştirme Araçları | Adobe Dreamweaver **·**  Zend Studio |
| Grafik Araçları | Adobe Photoshop **·**  Adobe Fireworks **·**  GIMP **·**  Inkscape |
| Altyapı & Servisler | Barındırma hizmeti **·**  Apache **·**  IIS **·**  MariaDB **·**  MySQL **·**  Microsoft SQL Server **·**  htaccess |
| Template | Smarty |
| Diğer | Arama motoru optimizasyonu |
| İçerik Yönetim Sistemleri | WordPress **·**  Joomla! **·**  Drupal **·**  CMS MS |
| E-Ticaret Sistemleri | Magento **·**  OpenCart **·**  OS Commerce **·**  Shopify |
| Framework | CakePHP **·**  CodeIgniter **·**  Laravel **·**  PHP Faces **·**  Django **·**  Ruby on Rails |

|  |  |
| --- | --- |
| Otorite kontrolü Bunu Vikiveri'de düzenleyin | 
* BNE: XX559296
* BNF: cb15511178c (data)
* GND: 7515401-8
* LCCN: sh2006004062
* NLI: 987007556721605171
* SUDOC: 108891712

 |