Witam, oto mój skrypt ajaxu. Trochę zgapiłem z adv ale jeśli coś podglądam to muszę to rozgryźć więc JS umie dużo więcej.
/* Nowy obiekt HttpRequest */
function getXMLHttpRequest ()
{
var request = false;
try
{
/* Próba dla FF > 2/OPERA > 9/IE>7 */
request = new XMLHttpRequest();
request.overrideMimeType('text/xml');
}
catch (error1)
{
try
{
/* Próba dla IE6 */
request = new ActiveXObject('Msxml2.XMLHTTP');
}
catch (error2)
{
try
{
/* Próba dla IE 5 */
request = new ActiveXObject('Microsoft.XMLHTTP');
}
catch (error3)
{
request = false;
}
}
}
return request;
}
req = getXMLHttpRequest (); //Stwóż obiekt HttpRequest
/* Obiekt jądra */
var obj =
{
url : null,
onInitialization : null, //Rozpoczynam Ładowanie
onLoading : null, //Ładuje
onLoaded :null, //Załadowano
onError : null, //Błąd
onComplete : null, //Odebrano
onSucces : null, //Zakończono
onInitializationHandled : false, //Rozpoczynam Ładowanie- WYkonano
onLoadingHandled : false, //Ładuje- Wkonano
onLoadedHandled : false, //Załadowano- Wkonano
onCompleteHandled : false, //Odebrano- Wkonano
onSuccesHandled : false //Zakończono- Wkonano
}
//Monitoruj stan
obj.onProgress = function ()
{
obj._onInitialization();
switch (req.readyState) {
case 1: obj._onLoading(); break;
case 2: obj._onLoaded(); break;
case 3: obj._onComplete(); break;
case 4: obj._onSucces(); break;
}
};
//Inicjacja
obj._onInitialization = function ()
{
if (obj.onInitializationHandled == true)
return;
obj.onInitializationHandled = true;
obj.registerEvent('Initialization', req);
};
//Ładowanie
obj._onLoading = function ()
{
if (obj.onLoadingHandled == true)
return;
obj.registerEvent('Loading', req);
obj.onLoadingHandled = true;
};
//Załadowane
obj._onLoaded = function ()
{
if (obj.onLoadedHandled == true)
return;
obj.registerEvent('Loaded', req);
obj.onLoadedHandled = true;
};
//Zakończono
obj._onComplete = function()
{
if (obj.onCompleteHandled == true)
return;
obj.registerEvent('Complete', req);
obj.onCompleteHandled = true;
};
obj._onSucces = function ()
{
if (obj.onSuccesHandled == true)
return;
if (req.status == 200)
obj.registerEvent('Succes', req);
else
obj.registerEvent('Error', req);
};
//Zarejestruj zdarzenie
obj.registerEvent = function (event)
{
args = new Array();
if (typeof obj != 'object')
return;
if (typeof obj['on'+event] != 'function')
return;
for (i=1; i<arguments.length; i++)
args.push(arguments[i]);
obj['on'+event].apply(null, args);
};
/* Obiekt myAjax*/
myAjax = new Object();
myAjax.get = function (arguments)
{
return myAjax.getResult('GET', arguments);
};
/* Zwróć wynik */
myAjax.getResult = function(method, arguments)
{
//Sprawdz metodę odwołania
if (typeof method == 'undefined' || method == null)
method = 'GET';
//Sprawdz czy obekt XMLHttpRequest został skasowany jeśli nie to skasuj
if (req != null)
{
delete req.onreadystatechange;
req = null;
}
req = getXMLHttpRequest();
//Sprawdz czy można utwożyć obiekt jeśli tak to stwórz a jeśli nie to zwróć pusty wynik
if (req == null)
return null;
//Sprawdz obiekt jądra
if (obj == null)
return null;
//Przypisz argumenty
myAjax.setArguments(arguments);
//Sprawdz link
if (obj.url == null || typeof obj.url == 'undefined')
alert('daniel123');
//Moitoruj stan
req.onreadystatechange = function () { obj.onProgress(); }
//Nadaj wartości domyślne
obj.onInitializationHandled =
obj.onLoadingHandled =
obj.onLoadedHandled =
obj.onCompleteHandled =
obj.onSuccesHandled = false;
//Pobierz plik
req.open("GET", obj.url);
req.send(null);
};
/* Przypisz arguenty */
myAjax.setArguments = function(arguments)
{
for (var a in arguments)
{
obj[a] = arguments[a];
}
};
<script type="text/javascript" src="ajax.js"></script>
<script type="text/javascript">
//<![CDATA[
function test()
{
document.getElementById('myj');
myAjax.get({
url : 'data.php',
onInitialization: function(obj) {element.innerHTML = 'Inicjacja';},
onLoading: function(obj) {element.innerHTML = 'Ładowanie';},
onLoaded: function(obj) {element.innerHTML = 'Załadowano';},
onComplete: function(obj) {element.innerHTML = 'Odebrano';},
onSucces: function(obj) {element.innerHTML = obj.responseText;},
onError: function(obj) {element.innerHTML = 'Napotkano błąd: '+obj.status;}
});
}
//]]>
</script>
<div id="myj">Hehehehehehe</div>
<input type="submit" value="Kliknij i sprawdz" onClick="test()">
Dziękuje za ocene