AJAX:在readyState = 1时停止运行

时间:2012-02-29 11:57:42

标签: javascript ajax

这是我的剧本:

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中没有看到任何请求)......

1 个答案:

答案 0 :(得分:2)

你永远不会真正开始请求!在get()函数的末尾添加:

this.xmlHttp.send();

希望这有帮助