zoukankan      html  css  js  c++  java
  • ajax编程**

    ajax 编程 *
    step1
    获得 XmlHttpRequest 对象。
    该对象由浏览器提供,但是该类型并没有标准化。
    ie 和其它浏览器不同,其它浏览器都支持该类型,而 ie 不支持。

      function getXmlHttpRequest(){
        var xhr = null;
        if((typeof XMLHttpRequest)!='undefined'){
          xhr = new XMLHttpRequest();
        }else {
          xhr = new ActiveXObject('Microsoft.XMLHttp');
        }
        return xhr;
      }

    step2
    使用 XmlHttpRequest 向服务器发请求。
    a.
    发送 get 请求
    var xhr = getXmlHttpRequest();
    /* open(请求方式,请求地址,同步/异步)
    * 请求方式: get/post
    * 请求地址:如果是 get 请求,请求参数添加到地址之后。
    * 比如 check_user.do?username=zs
    * 同步/异步:true 表示异步。*/
    xhr.open('get','check_user.do',true);
    /* 注册一个监听器(即当 xhr 的状态发生改变产生了 readystatechange 事件,
    * 该事件会由 f1 函数来处理。我们需要在 f1 函数里面获得服务器返回的数据,
    * 然后更新页面) */
    xhr.onreadystatechange=f1;
    /* 只有调用 send 方法之后,请求才会真正发送 */
    xhr.send(null);
    b.
    发送 post 请求
    var xhr = getXmlHttpRequest();
    xhr.open('post','check_username.do',true);
    //必须添加一个消息头 content-type
    xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    xhr.onreadystatechange=f1;
    xhr.send('username=zs');

    step3
    在服务器端,处理请求。
    step4
    在监听器当中,处理服务器返回的响应。
    xhr.onreadystatechange=f1;
    function f1(){
    //编写相应的处理代码
    }
    或者
    xhr.onreadystatechange=function(){
    //编写相应的处理代码
    if(xhr.readyState == 4){
    //只有 readyState 等于 4,xhr 才完整地接收到了服务器返回的数据。
    //获得文本数据
    var txt = xhr.responseText;
    //获得一个 xml dom 对象。
    var xml = xhr.responseXML;
    //dom 操作、更新页面
    }
    };

    ===============================

    XmlHttpRequest 对象的重要属性 **
    1)
    onreadystatechange: 注册一个监听器(也就是,绑订一个事件处理函数)。
    2)
    readyState:
    返回该对象不服务器通讯的状态。
    返回值是一个 number 类型的值,不同的值表示的
    含义如下:
    0 (未初始化) 对象已建立,但是尚未初始化(尚未调用 open 方法)。
    1 (初始化) 对象已建立,尚未调用 send 方法。
    2 (发送数据) send 方法已调用。
    3 (数据传送中) 已接收部分数据。
    4 (响应结束)接收了所有的数据。
    3)
    responseText:
    获得服务器返回的文本。
    4)
    responseXML:
    获得服务器返回的 XML dom 对象。
    5)
    status:  获得状态码

    ===========

    缓存问题 *
    在使用 ie 浏览器时,如果使用 get 方式发送请求,浏览器会将数据缓存起来。这样,当再次发送请
    求时,如果请求地址不变,ie 不会真正地向服务器发请求,而是将之前缓存的数据显示给用户。
    解决方式:

    方式一:使用 post 方式。
    方式二:在请求地址后面添加一个随机数。

    走在一起是缘分,在一起走是幸福; 在一起走是缘分,走在一起是幸福
  • 相关阅读:
    dotnet Framework 源代码 类库的意思
    dotnet Framework 源代码 类库的意思
    dotnet Framework 源代码 · Ink
    dotnet Framework 源代码 · Ink
    dotnet core 用值初始化整个数组
    dotnet core 用值初始化整个数组
    dotnet core 隐藏控制台
    dotnet core 隐藏控制台
    PHP mt_rand() 函数
    PHP mt_getrandmax() 函数
  • 原文地址:https://www.cnblogs.com/tarena/p/3625723.html
Copyright © 2011-2022 走看看