Показать сообщение отдельно
  #1 (permalink)  
Старый 30.07.2009, 15:41
Новичок на форуме
Отправить личное сообщение для nolka4 Посмотреть профиль Найти все сообщения от nolka4
 
Регистрация: 30.07.2009
Сообщений: 2

Написал класс-обертку над xmlhttp, но он не работает почему то:(
Код класса:
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. При этом, ошибок в отладчике не вываливается(ни в фирефоксе, ни в хроме).

Ткните пальцем пожалуйста, где я ошибку допустил?

Последний раз редактировалось nolka4, 30.07.2009 в 16:02.
Ответить с цитированием