zoukankan      html  css  js  c++  java
  • Ajax快速入门

    Ajax快速入门

    2015-1-28    早 8:00

    1.如何创建XHR对象

    答:按标准 new XMLHttpRequest()即可以得到

        考虑低版本IE 可以使用new window.ActiveXObject(('Microsoft.XMLHTTP'));

        兼容性创建:

        function createXHR(){

            var xhr = null;

            if(window.XMLHttpRequest){

                xhr = new XMLHttpRequest();

            }else if(window.ActiveXObject){

                xhr = new ActiveXObject('Microsoft.XMLHTTP');

            }

            return xhr;

    }

     

    2.如何利用XHR来发送请求

    答:分析HTTP协议,要请求需要明确一下几个因素:

        (1).用什么方法请求

            GET, POST, PUT, DELETE, HEAD

        (2).请求哪个资源?(url)

        (3).同步方式:同步/异步?

            true:异步 false:同步

            同步:程序顺序执行,返回值存储到xhr.responseText中

            异步:html不用等待php返回,直接向下执行

     

     

    单向投票代码:

        script代码:

    function vote(){

            //1.制造XHR

            var xhr = createXHR();

            //2.打开连接

            xhr.open('GET','./vote.php',true); //true:异步 false:同步

            //3.发送请求

            xhr.send(null);

            //alert("ok");

            //绑定状态变化的回调函数

            xhr.onreadystatechange = function(){

                var pg = document.getElementById('progress');

    if(this.readyState == 4 && this.responseText == 1)

                    alert("投票成功了")        

    pg.innerHTML = pg.innerHTML +'状态现在变成' +this.readyState;

            }

     

    }    

    html代码:

    <div>

        <p><img src="a.png"/></p>

        <p><input type="button" value="投票方法1" onclick="vote();"/></p>

        <div id="progress"></div>

     

    </div>

    vote.php中代码:

        <?php

            //此处 sleep(2); //观察同步和异步的效果

    $cnt = file_get_contents('./vote.txt');

    $cnt += 1;

    file_put_contents('./vote.txt',$cnt);

    ?>

     

    3.如何获取请求的返回数据

    答:XHR对象本身有一个属性:responseText 代表返回值

        xhr.open('GET','./02-vote.php',false);

    alert(xhr.responseText);

     

    4.如果使用异步,程序不等待响应而继续向下执行,如何知道之前的请求已经完成

    答:XHR对象在请求与响应过程中,状态会不断发生变化(0-4)逐步变化

        我们可以绑定一个函数,监听状态的变化,只要状态变化就触发某个函数

        //绑定状态变化的回调函数

        xhr.onreadystatechange = function(){

            var pg = document.getElementById('progress');

    if(this.readyState == 4 && this.responseText == 1)

                alert("投票成功了")        

    pg.innerHTML = pg.innerHTML +'状态现在变成' +this.readyState;

        }

        

        XHR 的readyState当变到4时,就意味着请求完毕。

     

     

    ********************************************
    * 博客园: http://www.cnblogs.com/lihaiyan/
    * 邮箱:1063385677@qq.com
    * QQ: 1063385677
    * Copyright ©2014 Lover雪儿
    ********************************************
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    Web.xml详解
    Spring 及 SpringMVC的web.xml配置详解
    <context-param>与<init-param>的区别与作用
    关系型数据库(RDBMS)与 MongoDB 的对应关系
    Dubbo通过注解实现RPC调用
    org.springframework.stereotype.Service和com.alibaba.dubbo.config.annotation.Service两种service的区别
    Linux下部署 jar包
    最新Dubbo-admin+Zookeeper搭建
    spring security3.1配置比较纠结的2个问题
    SpringSecurity——基于Spring、SpringMVC和MyBatis自定义SpringSecurity权限认证规则
  • 原文地址:https://www.cnblogs.com/lihaiyan/p/4274235.html
Copyright © 2011-2022 走看看