Код класса:
function Ajax()
{
this.versionInfo='xternalx Ajaxter v1.0';
this.timeout = null;
var request = null;
this.callbackHandler = null;
this.errorHandler = null;
this.isActiveX = false;
this.createAjax = function()
{
if (window.XMLHttpRequest)
{
try
{
request = new XMLHttpRequest();
request.onreadystatechange = this.stateChanged;
return 1;
}
catch (e){ alert('1'+e);}
}
else
if (window.ActiveXObject)
{
this.isActiveX=true;
try
{
request = new ActiveXObject('Msxml2.XMLHTTP');
request.onreadystatechange = this.stateChanged;
return 2;
}
catch (e){ alert('2'+e);}
try
{
request = new ActiveXObject('Microsoft.XMLHTTP');
request.onreadystatechange = this.stateChanged;
return 2;
}
catch (e){ alert('3'+e);}
}
return null;
}
this.getBrowserName = function()
{
var ua = navigator.userAgent.toLowerCase();
// Определим Internet Explorer
if(ua.indexOf("msie") != -1 && ua.indexOf("opera") == -1
&& ua.indexOf("webtv") == -1)
{
return "msie"
}
// Opera
if(ua.indexOf("opera") != -1)
{
return "opera"
}
// google chrome
if(ua.indexOf("chrome") != -1)
{
return "chrome";
}
// Gecko = Mozilla + Firefox + Netscape
if(ua.indexOf("gecko") != -1)
{
return "gecko";
}
// Safari, используется в MAC OS
if(ua.indexOf("safari") != -1)
{
return "safari";
}
// Konqueror, используется в UNIX-системах
if(ua.indexOf("konqueror") != -1)
{
return "konqueror";
}
return "unknown";
}
this.setErrorHandler = function(handler)
{
this.errorHandler = handler;
}
this.stateChanged = function()
{
alert(request.readyState+' '+request.status);
if(request.readyState == 4 && request.status == 200)
{
clearTimeout(this.timeout);
this.callbackHandler(request.responseText);
}
else
{
this.errorHandler('ajaxter error: '+request.status+" - "+request.statusText);
}
}
this.post = function(url,data,callback)
{
if(request)
{
request.open("POST",url,true);
this.callbackHandler = callback;
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
request.send(data);
this.timeout = setTimeout( function(){ request.abort(); this.errorHandler("Request timeout<br/>Status: "+request.status+"<br />Status Text: "+request.statusText+"<br />Ready State: "+request.readyState) }, 10000);
}
}
this.get = function(url, callback)
{
if(request)
{
this.callbackHandler = callback;
request.open("GET",url,true);
if(this.isActiveX)
request.send();
else
request.send(null);
this.timeout = setTimeout( function(){ request.abort(); this.errorHandler("Request timeout<br/>Status: "+request.status+"<br />Status Text: "+request.statusText+"<br />Ready State: "+request.readyState) }, 10000);
}
}
this.createAjax();
}
Соответственно, использую его так:
function newAjax()
{
a = new Ajax();
a.setErrorHandler(errorHandler);
return a;
}
function errorHandler(errorMsg)
{
alert('Ошибка запроса',errorMsg);
}
newAjax().get('http://xternalx.7pe.net/', function(data)
{
alert(data);
}
);
При выполнении код не работает, выскакивает request timeout. При этом, ошибок в отладчике не вываливается(ни в фирефоксе, ни в хроме).
Ткните пальцем пожалуйста, где я ошибку допустил?