XMLHttpRequest (genellikle XHR olarak kısaltılır ), JavaScript'te erişilebilen ve XML , JSON , ancak aynı zamanda HTML ve hatta HTTP isteklerini kullanarak basit metinler elde etmenizi sağlayan bir tarayıcı nesnesidir .
Ana avantaj, eşzamansız taraftadır. Artık bir parçanın değiştirilmesi gerektiğinde tüm sayfanın tamamen yeniden yüklenmesi gerekmiyor, bu da zamandan tasarruf sağlıyor ve sunucu ve dolayısıyla müşteri ile etkileşimi iyileştiriyor.
Dezavantajları ise:
JavaScript kullanımıyla görüntülenen dinamik içerik, tarayıcının neden bütünüyle yüklenmiş bir html sayfasıyla aynı davranışı gösteremediğini açıklar (kaydetme bağlantıları, yer imi, geri düğmesi).
Diğer farklılıklar var:
Tarayıcı ne olursa olsun:
function createXhrObject() { if (window.XMLHttpRequest) return new XMLHttpRequest(); if (window.ActiveXObject) { var names = [ "Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.3.0", "Msxml2.XMLHTTP", "Microsoft.XMLHTTP" ]; for(var i in names) { try{ return new ActiveXObject(names[i]); } catch(e){} } } window.alert("Votre navigateur ne prend pas en charge l'objet XMLHTTPRequest."); return null; // non supporté } xhr = createXhrObject();XMLHttpRequest aracılığıyla yüklenen sayfada bulunan JavaScript kodu, yükleme sırasında çalıştırılmayacaktır.
Yüklenen JavaScript kodunu, yürütülmesi için geçerli sayfaya eklemelisiniz.
Aşağıdaki kod, daha önce açıklandığı gibi yükledikten sonra alt sayfadaki <script> </script> etiketleri arasında bulunan JavaScript'i de çalıştırabilir:
if (XHR.readyState == 4) { document.getElementById('contenu').innerHTML = XHR.responseText; var js = document.getElementById('contenu').getElementsByTagName('script'); for( var i in js ) { eval(js[i].text); } }XMLHttpRequest ilk olarak Microsoft tarafından Internet Explorer 5.0 için bir ActiveX nesnesi olarak geliştirilmiştir . (Eylül 1998 ). Daha sonra devralındı ve Mozilla 1.0 (Mayıs 2002), Safari 1.2 (Şubat 2004), Opera 7.60 TP1 (Ağustos 2004) sonra Konqueror 3.4 (Mart 2005).
Nisan 2006'da bir W3C Tavsiyesi olması önerildi .
XMLHttpRequest kullanımı, JavaScript dilinin kullanılmasını gerektirir.
Tarayıcılar bunu farklı şekillerde uygular: Internet Explorer için ActiveX, diğerleri için nesne. Nesnenin oluşturulması bu nedenle tarayıcıya bağlı olarak farklı şekilde yapılır. Ek olarak, Internet Explorer'da ActiveX oluşturmak için birkaç sürümü test etmek gerekir. Bununla birlikte, nesneyi oluşturduktan sonra, yöntemler ve nitelikler tüm tarayıcılar için aynıdır.
Microsoft, XMLHttp işlevini MSXML adı altında bir ActiveX (Internet Explorer <7) biçiminde Internet Explorer (5 ila 7) web tarayıcısına dahil eden (Eylül 1998 ) ilk kişidir .
Mozilla projesinin geliştiricileri daha sonra XMLHTTP sürümlerini Mozilla sürüm 1.0'da XMLHttpRequest adı altında uyguladılar (Mayıs 2002). Diğer tarayıcılar daha sonra sırayla XMLHttp uyguladı: Safari 1.2 (Şubat 2004), Konqueror 3.4 (Mart 2005), Opera 8.0 (Nisan 2005), icab 3.0b352.
World Wide Web Consortium sonra standardize etmeye çalışır (Arayüz Programlama) API adı XMLHttpRequest üzerinde altında sürüm 1'de API spesifikasyonları yayınlayarak15 Nisan 2007 ve sürüm 2 25 Şubat 2008. Bu nedenle, XMLHttpRequest'in çeşitli uygulamaları mevcuttur. Tüm bu sürümleri desteklemek için, yüksek seviyeli bir javascript API ( AJAX ), XMLHttpRequest'in farklı uygulamalarını ve sürümlerini göz ardı etmenize olanak tanır.
Ancak şu anda (2007'de) XMLHttpRequest, web'in erişilebilirliğini etkilediği için eleştirildi .
XMLHttpRequest standardının bir halefi vardır, XMLHttpRequest Düzey 2 ve diğer teknolojiler de onun yerini alır: