2012-02-29 2 views
1

Вот мой сценарий:AJAX: прекращает работу при readyState = 1

var Ajax = { 

    init: function(){ 
     try{    
      this.xmlHttp = new XMLHttpRequest();    
     }   
     catch(e){    
      try{     
       this.xmlHttp = new ActiveXObject("Microsoft.XMLHttp");     
      }    
      catch(e){     
      }    
     }   
     return this; 
    }, 

    get: function(url , async , fn){ 
     this.xmlHttp.open("GET" , url , async); 
     console.log("1"); 
     this.xmlHttp.setRequestHeader('Content-Type' , 'application/x-www-form-urlencoded'); 
     console.log(this.xmlHttp.readyState); 
     this.xmlHttp.onreadystatechange = function(){ 
      console.log("3"); 
      if(this.xmlHttp.readyState == 4){ 
       if(this.xmlHttp.status == 200){ 
        try{ 
         if(fn) return fn(this.xmlHttp.responseText); 
        } 
        catch(e){ 
         alert(e); 
        } 
       } 
       else alert("bad status"); 
      } 
      else alert("bad state"); 
     } 
    } 

} 

А линия назвать:

Ajax.init().get("localhost/engine.php" , true , function(txt){alert(txt)}); 

Теперь в консоли я получаю это:

1 
1 

Следовательно, я понимаю, что ходовые стопки на this.xmlHttp.onreadystatechange = function(){, а readyState - 1. Не могли бы вы рассказать мне, что здесь не так? Я пропустил здесь большую ошибку?

После исследования немного, кажется, что XmlHttp действительно не открыть URL (нет запроса рассматривается в консоли Chrome и Firebug) ...

+0

ли эта помощи: http://stackoverflow.com/questions/751269/ajax-wont-get-past-readystate -1-why –

+0

@ Судир не очень. Мне нужно, чтобы он перекрещивался, не может зависеть от '.onload' –

+0

Вам нужно вывести значение« readyState »внутри обратного вызова для его изменения, а не сразу после того, как вы сделали запрос. –

ответ

2

Вы никогда не на самом деле, начиная запрос! Функция Добавьте это в конце вашего получаета():

this.xmlHttp.send(); 

Надеется, что это помогает

+0

@wonderful! Большое спасибо! Даже не заметил, что я пропустил это. –

Смежные вопросы