zoukankan      html  css  js  c++  java
  • Ajax 学习笔记(1)

    技术的核心是采用XmlHttp来请求和接收回应。XmlHttp只是一种技术规范,具体的实现上IE和Firefox有所不同,IE是用ActiveX方式,而Firefox是内置实现的。

    IE下创建XmlHttp对象:
    A=new ActiveXObject('Msxml2.XMLHTTP');

    Firefox下创建XmlHttp对象:
    A=new XMLHttpRequest();

    还可以用下面的写法,可以比较好的兼容IE和Firefox:
    function createXH(){
    var A=null;
    try { A=new ActiveXObject('Msxml2.XMLHTTP') } catch(e) {
     try{A=new ActiveXObject('Microsoft.XMLHTTP') } catch(oc) { A=null }
    }
    if ( !A && typeof XMLHttpRequest != 'undefined' ) { A=new XMLHttpRequest() }
    return A
    }

    创建好XmlHttp之后,接下来就是发送请求和接收回应:
    var xmlhttp=createXH();
    xmlhttp.open('POST', 'Message/CheckNew.aspx', false);
    false - 表示发送消息之后一直等待回应(即同步执行的方式);
    true - 表示发送消息之后不等待回应,继续执行下一步(即异步执行的方式);

    下面是同步执行的代码写法:
    xmlhttp.open('POST', 'Message/CheckNew.aspx', false);
    xmlhttp.send(''); // 这里也可以在请求时发送一些数据,如果没有数据,也要发个空数据
    var rt=xmlhttp.responseText;
    // rt 就是接受回应的数据,接下来就是客户端对rt进行分析处理

    同步执行的写法一般情况最好不要用,因为如果请求的服务器端半天不回应或者网络不太稳定的情况下,浏览器会一直等待回应,而且在等待期间浏览器几乎死掉,CPU占用接近100%!
    用异步执行的方式就可以避免这个问题,如下:
    var xmlhttp = createXH();
    function checkNewMessages(){
     xmlhttp.open('POST', 'Message/CheckNew.aspx', true);
     xmlhttp.onreadystatechange=continue;
     xmlhttp.send('');
    }
    function continue(){
     if(xmlhttp.readyState==4){
     var rt = xmlhttp.responseText;
    }
    }

    xmlHttp.responseText返回的字符串,如何处理这些字符串?一些Ajax框架对这个处理过程进行了封装,增加很多种数据类型,甚至还可以处理DataSet。如果不想用这些框架,也可以使用简单类型,如请求时将请求数据格式化为Xml方式(便于服务器端的Aspx处理),而返回结果则写成javascript的数组表达式形式(方便客户端进行处理)。

    如:
    发送时
    var xml='<message><receiver>kathy</receiver><content>message context!</content></message>';
    ...
    xmlhttp.send(xml);
    接收时服务器端返回的字符串为:
    ['rrooyy','2005-05-01 08:22:12','See you!']
    var rt=xmlhttp.responseText;
    var msg=eval(rt);
    然后就可以按照数组方式对数据进行处理了;

  • 相关阅读:
    java判断一个字符串是否包含某个字符
    Java去掉Html标签的方法
    如何转换成utf-8格式的,在jsp页面中正常显示换行
    a标签设置手型
    a标签置灰不可点击
    校验手机号码格式
    用JQuery 判断某个属性是否存在hasAttr的解决方法
    验证手机号码 (包含166和199)
    获取短信验证码倒计时
    Noisy Channel模型纠正单词拼写错误
  • 原文地址:https://www.cnblogs.com/rrooyy/p/219349.html
Copyright © 2011-2022 走看看