XMLHttpRequest
Podstawową sprawą w budowaniu aplikacji opartej o AJAX jest utworzenie obiektu XMLHttpRequest. I tutaj o ile sprawa jest prosta w przypadku przeglądarek Firefox i Opera w których wystarczy utworzyć nową instancję tego obiektu, to w przypadku IE6 lub niższego trzeba dodać trochę kodu aby zadowolić ActiveX-a 🙂
Kod funkcji zapiszemy np. w pliku ajax.js
Na wstępie deklarujemy zmienną która będzie przechowywała ten obiekt:
var xmlHttp = createXmlHttpRequestObject();
Skoro mamy już gdzie przechować obiekt, tworzymy funkcję która go utworzy:
function createXmlHttpRequestObject();
Teraz tworzymy zmienną która przechowa odwołanie do obiektu XMLHttpRequest.
var xmlHttp;
Ponieważ jak wspomniałem wcześniej, dla IE6 i starszych trzeba będzie wywołać obiekt inaczej, zastosujemy sekwencję try-catch. Na początku spróbujemy utworzyć nasz obiekt dla wszystkich przeglądarek nie będących IE6 bądź starszymi, jeśli to się nie uda (tzn. jeśli okaże się że to jednak IE) wywołamy instrukcję catch która utworzy obiekt za pomocą kontrolki ActiveX.
try
{
xmlHttp = new XMLHttpRequest();
}
Jak widać gdyby nie było IE życie stałoby się prostsze 🙂
Ale ponieważ nie jest, stosujemy instrukcję catch:
catch(e)
{
var XmlHttpVersions = new Array(„MSXML2.XMLHTTP.6.0”,
„MSXML2.XMLHTTP.5.0”,
„MSXML2.XMLHTTP.4.0”,
„MSXML2.XMLHTTP.3.0”,
„MSXML2.XMLHTTP”,
„Microsoft.XMLHTTP”);
for (i=0; i<XmlHttpVersions.length && !xmlHttp; i++)
{
try
{
xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
}
catch(e)
{}
}
}
Odnośnie tego co zostało zapisane w insrtrukcji catch: najpierw staramy się rozpoznać z którą wersją kontrolki ActiveX mamy do czynienia w IE, w tym celu zapisujemy wszystkie jej wersje do tablicy (najnowsza to 6.0) a potem sprawdzamy na pętli z którą wersją uda się utworzyć obiekt, pętla schodzi od najnowszej wersji kontrolki w dół aż do skutku, czyli do utworzenia obiektu XMLHttpRequest.
Jeśli obiekt zostanie utworzony, jest on zwracany do zainicjowanej na początku zmiennej xmlHttp, jeśli z jakiegoś powodu nie udało się utworzyć obiektu, zwracany jest błąd :
if (!xmlHttp)
alert(„Bład podczas tworzenia obiektu XMLHttpRequest”);
else
return xmlHttp;
Poniżej pełny kod funkcji tworzącej obiekt XMLHttpRequest :
function createXmlHttpRequestObject()
{
var xmlHttp; try
{
xmlHttp = new XMLHttpRequest();
}
catch(e)
{
var XmlHttpVersions = new Array(„MSXML2.XMLHTTP.6.0”,
„MSXML2.XMLHTTP.5.0”,
„MSXML2.XMLHTTP.4.0”,
„MSXML2.XMLHTTP.3.0”,
„MSXML2.XMLHTTP”,
„Microsoft.XMLHTTP”);
for (i=0; i<XmlHttpVersions.length && !xmlHttp; i++)
{
try
{
xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
}
catch(e)
{}
}
} if (!xmlHttp)
alert(„Bład podczas tworzenia obiektu XMLHttpRequest”);
else
return xmlHttp; }
…or something like this:
The XYZ Doohickey Company was founded in 1971, and has been providing quality doohickeys to the public ever since. Located in Gotham City, XYZ employs over 2,000 people and does all kinds of awesome things for the Gotham community.
As a new WordPress user, you should go to your dashboard to delete this page and create new pages for your content. Have fun!