从一个简单的例子看ajax的执行过程

这个例子虽然简单,但是可以通过debug模式来仔细研究一下ajax在执行过程中的执行顺序,页面加载时会先去执行handleStateChange(),但是执行的时候不会进到方法内,当点击按钮执行到xmlHttp.onreadystatechange = handleStateChange;时,程序 不会去执行handleStateChange()这个方法,执行open后才会再次进入handleStateChange()这个方法,执行send后会再次进入handleStateChange()这个方法,这个时候xmlHttp.readyState会一直往后执行,一直到状态4为止,这时数据就返回了。每当 XMLHTTP 对象的状态发生改变时,handleStateChange() 函数就会执行。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
        <head> 
                <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
                <title>Simple XMLHttpRequest</title> 
                <script type="text/javascript"> 
                        var xmlHttp; 
                        function createXMLHttpRequest(){ 
                                if (window.ActiveXObject) { 
                                        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
                                } 
                                else    
                                        if (window.XMLHttpRequest) { 
                                                xmlHttp = new XMLHttpRequest(); 
                                        } 
                        } 
                         
                        function startRequest(){ 
                                createXMLHttpRequest();//创建XMLHttpRequest 
                                xmlHttp.onreadystatechange = handleStateChange; 
                                xmlHttp.open("GET", "simpleResponse.txt", true); 
                                xmlHttp.send(null); 
                        } 
                         
                        function handleStateChange(){ 
                                if (xmlHttp.readyState == 4) { 
                                        if (xmlHttp.status == 200) { 
                                                document.getElementById("test").innerHTML = xmlHttp.responseText;//返回simpleRespose.txt中的内容 
                                        } 
                                } 
                        } 
                </script> 
        </head> 
        <body> 
                <form action="#"> 
                        <input type="button" value="Start Basic Asynchronous Request" onclick="startRequest();"/> 
                        <div id="test"> 
                        </div> 
                </form> 
        </body> 
</html>
上一篇:如何正确使用RestTemplate【二】


下一篇:工作多年的我是如何从零到一转型到Java并拿到多个大厂offer的——《我的Java打怪日记》