您现在的位置:首页 >> 前端 >> 内容

javascript学习笔记十二——Ajax入门

时间:2018/7/10 14:04:25 点击:

  核心提示:系列文章导航:网页运行原理关于响应事件Ajax入门Ajax:Asynchronous javascript And XML。写个简单的例子:bodyform id='form1' runat=...

系列文章导航:

javascript学习笔记一——数据类型

javascript学习笔记二——函数

javascript学习笔记三——作用域

javascript学习笔记四——Eval函数

javascript学习笔记五——类和对象

javascript学习笔记六:prototype的提出

javascript学习笔记七——原型链的原理

javascript学习笔记八——用JSON做原型

javascript学习笔记九——prototype封装继承

javascript学习笔记十——网页运行原理

javascript学习笔记十一——包装DOM对象

javascript学习笔记十三——关于响应事件

javascript学习笔记十二——Ajax入门


Ajax:Asynchronous javascript And XML。写个简单的例子:

<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="LabelTime" runat="server">asp:Label>
    div>
    form>
    <script type="text/javascript">
        if (!window.XMLHttpRequest) {
            window.XMLHttpRequest = function () {
                return new ActiveXObject("Microsoft.XMLHTTP");
            };
        }
        function UpdateClock() {
            var request = new XMLHttpRequest();
            request.open("post", "TimeTest.aspx", false);
            request.send("");
            document.getElementById("LabelTime").innerText = request.responseText;
        }
        setInterval(UpdateClock, 1000);
        
    script>
body>

而在另一个页面写下当前时间,这样就形成了一个钟表。

代码很简单,就是操纵一个XMLHttpRequest对象来获取服务器时间,然后更新时间。上面的代码在与服务器交互时,并没有页面整体刷新,而是局部刷新。

但是上面的代码在request.open时,最后一个参数为false,表示发出的XMLHttpRequest是同步的,由于javascript是单线程的,所以在等待请求的过程中,线程会被阻塞,如果请求时间过长,浏览器会停止响应。

虽然javascript是单线程的,但是XMLHttpRequest具备异步处理请求的能力。代码如下:

<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="LabelTime" runat="server">asp:Label>
    div>
    form>
    <script type="text/javascript">
        if (!window.XMLHttpRequest) {
            window.XMLHttpRequest = function () {
                return new ActiveXObject("Microsoft.XMLHTTP");
            };
        }

        function AsynRequest() {
            var request = new XMLHttpRequest();
            request.open("post", "TimeTest.aspx", true);
            request.onreadystatechange = function () {
                if (request.readyState === 4) {
                    UpdateClock(request.responseText);
                }
            };
            request.send("");
        }
        function UpdateClock(time) {
            document.getElementById("LabelTime").innerText = time;
        }
        setInterval(AsynRequest, 1000);
        
    script>
body>

哎,没有智能提示的日子真不好过。

Tags:10 06 6A AV 
作者:飞林沙 来源:博客园