Вот мой сценарий: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) ...
ли эта помощи: http://stackoverflow.com/questions/751269/ajax-wont-get-past-readystate -1-why –
@ Судир не очень. Мне нужно, чтобы он перекрещивался, не может зависеть от '.onload' –
Вам нужно вывести значение« readyState »внутри обратного вызова для его изменения, а не сразу после того, как вы сделали запрос. –