美文网首页
学习《Javascript DOM 编程艺术》Ajax走的一处弯

学习《Javascript DOM 编程艺术》Ajax走的一处弯

作者: 小前seant | 来源:发表于2016-11-04 15:38 被阅读154次

    今天在学习《Javascript DOM 编程艺术》中,跟着写了第七章的Ajax代码时发现怎么都出不来合理结果。

    先看程序:

    <!---HTML代码->
    <html>
    <head>
        <meta charset="utf-8">
        <title>Ajax</title>
    </head>
    <body>
        <div id="new"></div>
        <script type="text/javascript" src="scripts/addLoadEvent.js"></script>
        <script type="text/javascript" src="scripts/getHttpObject.js"></script>
        <script type="text/javascript" src="scripts/getNewContent.js"></script>
    </body>
    </html>
    

    将其保存为ajax.html,并引入以下JS。

    function getHTTPObject(){  
        if(typeof XMLHttpRequest=="undefined"){  
            XMLHttpRequest=function(){  
                try{  
                    return new ActiveXObject("Msxml2.XMLHTT.6.0");  
                }catch(e){}  
                try{  
                    return new ActiveXObject("Msxml2.XMLHTT.3.0");  
                }catch(e){}  
                try{  
                    return new ActiveXObject("Msxml2.XMLHTT");  
                }catch(e){}  
                return false;  
            }  
        }  
        return new XMLHttpRequest();  
    }  
      
    function getNewContent(){  
        var request=getHTTPObject();  
        if(request){  
            request.open("GET","example.txt",true);  
            request.onreadystatechange=function(){  
                if(request.readyState==4){  
                    var para=document.createElement("p");  
                    var text=document.createTextNode(request.responseText);  
                    para.appendchild(text);  
                    document.getElementById("new").appendchild(para);  
                }  
            };  
            request.send(null);  
        }else{  
            alert("不好意思,你的浏览器不支持ajax");  
        }  
    }  
      
    addLoadEvent(getNewContent); 
    

    用浏览器打开ajax.html,发现毫无反应。尝试用几个alert()在js中查找问题。最终定位到

     if(request.readyState==4)
    

    这个地方始终进不去。
    查找各种资料之后终于明白了,Ajax要基于http协议的,我在本地里并没有设置服务器又怎么会产生Ajax呢! (哎,以前还搭过WAMP呢,怎么现在全忘了- -)

    我用的是mac,mac自带apache,参照这篇博文开启apache服务器。
    apache默认的网站根目录是/Library/WebServer/Documents,将之前写好的文件放在这个目录下,然后打开浏览器(我用的是chrome),输入localhost/ajax.html,成功!(直接在目录下打开ajax.html是不起作用的)
    通过在function getNewContent()中设置alert(request.readyState),还可以看到状态是不停更新的,所以这个函数应该是一直保持到http请求结束的。
    折腾了我大半天的东西终于搞定- -也是因为自己对Ajax的概念不完全理解造成的吧。
    继续前进!

    相关文章

      网友评论

          本文标题:学习《Javascript DOM 编程艺术》Ajax走的一处弯

          本文链接:https://www.haomeiwen.com/subject/mlcwuttx.html