这是我的剧本:
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
因此,我了解在{ready状态为1时this.xmlHttp.onreadystatechange = function(){
的运行卡住了。请你告诉我,这里有什么问题?我在这里错过了一些更大的错误吗?
经过一番研究后,似乎xmlHttp并没有真正打开网址(Chrome的控制台和Firebug中没有看到任何请求)......
答案 0 :(得分:2)
你永远不会真正开始请求!在get()函数的末尾添加:
this.xmlHttp.send();
希望这有帮助