必赢亚洲手机app下载


拼图游戏的解决之道

周边字符集及编码

Ajax工作原理

  本文转发至http://www.cnblogs.com/mingmingruyuedlut/archive/2011/10/18/2216553.html,如果有侵权,请联系906522957@qq.com

  在写那篇小说此前,曾经写过一篇关于AJAX技术的小说,不过提到到的方面很窄,对AJAX技术的背景、原理、优缺点等各样方面都很少提到null。这次写那篇作品的背景是因为商家索要对中间程序员做一个扶植。项目COO找到了自身,并且征询我作育的焦点,考虑到前边Javascript、CSS等WEB开发技术都已经讲解过了,所以决定针对AJAX这一块做一个相比较系统的培育,所以那篇文章实际上是一个扶植的材料。

  在那篇文章中,我将从10个方面来对AJAX技术进行系统的讲解。

1、ajax技术的背景

  不可以依然不可以认,ajax技术的流行得益于google的大力推广,正是出于google
earth、google
suggest以及gmail等对ajax技术的广泛应用,催生了ajax的盛行。而这也让微软感到无限的难堪,因为早在97年,微软便早已讲明了ajax中的关键技术,并且在99年IE5推出之时,它便先导协理XmlHttpRequest对象,并且微软前面已经上马在它的一些产品中使用ajax,比如说MSDN网站菜单中的一些施用。遗憾的是,不领悟是因为什么样想法,当时微软声明了ajax的宗旨技术之后,并不曾看出它的潜力而加以发展和拓宽,而是将它搁置起来。对于那或多或少的话,我个人是觉得相当奇怪的,因为以微软的资源和它的战略眼光来说,应该不会看不到ajax技术的前景,唯一的表明或者就是因为立即它的第一竞争对手Netscape的熄灭反而使它变得麻痹和愚蠢,毕竟巨人也有打盹的时候,比如IBM曾经在对微软战略上的失误。正是那四遍的失误,成就了它现在的竞争对手google在ajax方面的超过地位,而事实上google近日在ajax技术方面的超越是微软所不能达标的,那一点在后边我讲述ajax缺陷的时候也会涉及。现在微软也发觉到了这几个题材,因而它也初叶在ajax领域斗争,比如说推出它和谐的ajax框架atlas,并且在.NET2.0也提供了一个用来促成异步回调的接口,即ICallBack接口。那么微软为啥对友好在ajax方面的滑坡如此紧张吗?现在就让大家来分析一下ajax技术后边隐藏的浓密含义。

2、ajax技术的意义

  大家在平时的支出中都多多少少的触发依旧利用到了ajax,谈到ajax技术的意义,我们关心得最多的任其自流是升级用户的感受。不过,要是大家构成将来电脑和互联网的发展趋势,大家会发觉ajax技
术在少数地点恰恰代表了那种倾向。为何这么说吧?我们知晓,自从电脑出现以来,一向是桌面软件占据着相对主导的地位,可是互联网的产出和成功使那所有开头暴发着神秘的生成。相当部分的人都相信,迟早有一天,数据和电脑软件将会从桌面转移到互联网。也就是说,未来的处理器有可能丢弃笨重的硬盘,而直接从互
联网来获取数据和服务,我记得自己念大学的时候,有位助教给我们上课的时候,曾经考虑过那样一种现象,也许在未来的电脑桌面上,没有任何多余的软件和顺序,
而仅仅唯有一个IE,即使现在看起来大家离开这一天还很悠久,并且这几个中还有不少的题目亟待缓解,但是我以为这些不用希望,而是必然将落到实处的现实性。那么,那中间的紧要问题就是互联网的连日不平静,什么人也不愿意望着自己的微机从服务器一点一滴的下载数据,那么,ajax是否化解了那些题目啊,说实话,与其说ajax解决了这几个问题,倒不如它只是覆盖了这些题材,它只是在服务器和客户端之间充当了一个缓冲器,让用户误以为服务没有间断。精确的说,ajax并无法增高从服务器端下载数据的快慢,而只是使这几个等待不那么令人失落。可是正是那一点就可以发生巨大的影响和打动,它实在也对桌面软件发生了赫赫的相撞。那点自己用一个例证来证实,我们得以比较一下Outlook
Express和Gmail,前者是卓越的桌面软件,后者是ajax所已毕的B/S方式,实际上后者近年来曾经在日益取代前者了,Gmail在收发邮件的时候已经和Outlook
Express的作用大概从不异样了,而且它不须求安装客户端程序。那就是为何微软对ajax所带来的撞击所有那样的恐惧心思,并且在它前不久所开展的查证之中,将google看做他们前途十年内的根本竞争敌手的根本原因之一。当然,那种转移也并不会将桌面软件全体淘汰,现有的浏览器还尚未一个能像PhotoShop等桌面程序那样处理千丝万缕的图像。不过大家也不可能忽视它带来的熏陶和碰撞。

3、关于ajax的名字

  ajax 的完备是Asynchronous JavaScript and
XML,其中,Asynchronous 是异步的情趣,它有别于传统web开发中使用的一块的情势。

4、关于联合和异步

  异步传输是面向字符的传导,它的单位是字符;而同步传输是面向比特的传导,它的单位是桢,它传输的时候必要接受方和发送方的钟表是保持一致的。

具体来说,异步传输是将比特分成小组来展开传递。一般每个小组是一个8位字符,在每个小组的头顶和尾巴都有一个起来位和一个停歇位,它在传递进程中接收方和发送方的钟表不要求一律,也就是说,发送方可以在任何时刻发送那么些小组,而接收方并不知道它怎么时候到达。一个最醒目标例子就是计算机键盘和主机的通讯,按下一个键的还要向长机发送一个8比特位的ASCII代
码,键盘能够在任曾几何时刻发送代码,这有赖于用户的输入速度,内部的硬件必须能够在任什么时候刻接收一个键入的字符。那是一个典型的异步传输进程。异步传输存在
一个隐秘的问题,即接收方并不知道数据会在如何时候到达。在它检测到数量并做出响应此前,第二个比特已经过去了。那如同有人意外地从前面走上来跟你说
话,而你没来得及反应过来,漏掉了最前边的多少个词。由此,每一次异步传输的音信都以一个开头位早先,它打招呼接收方数据现已抵达了,那就给了接收方响应、接收
和缓存数据比特的时日;在传输截至时,一个停歇位代表该次传输信息的平息。根据常规,空闲(没有传送数据)的线路实际带领着一个意味着二进制1的信号。步传输的起来位使信号变成0,其余的比特位使信号随传输的数额新闻而变更。最后,甘休位使信号重新变回1,该信号一贯维持到下一个始发位到达。例如在键盘上数字“1”,按照8比特位的伸张ASCII编码,将发送“00110001”,同时要求在8比特位的前头加一个先导位,后边一个为止位。

一块传输的比特分组要大得多。它不是独自地发送每个字符,每个字符都有自己的开头位和平息位,而是把它们构成起来共同发送。大家将这几个构成称为数据帧,或简称为帧。

  数据帧的首先局地含有一组一起字符,它是一个例外的比特组合,类似于前方提到的开始位,用于公告接收方一个帧已经抵达,但它同时仍能确保接收方的采样速度和比特的到达速度保持一致,使收发双方进入同步。

  帧的终极一局地是一个帧停止标记。与协办字符一样,它也是一个特殊的比特串,类似于前方提到的为止位,用于表示在下一帧起头往日未曾其他即将到达的多少了。

  同步传输常常要比异步传输急迅得多。接收方不必对各样字符举办伊始和截止的操作。一旦检测到帧同步字符,它就在接下去的多少到达时吸收它们。其余,同步传输的支付也比较少。例如,一个天下无双的帧可能有500字节(即4000比特)的数量,其中可能只包涵100比特的付出。那时,扩展的比特位使传输的比特总数扩充2.5%,那与异步传输中25
%的增值要小得多。随着数据帧中实际上数据比特位的充实,费用比特所占的比重将相应地减小。可是,数据比特位越长,缓存数据所急需的缓冲区也越大,那就限制了一个帧的深浅。其余,帧越大,它占据传输媒体的连接时间也越长。在极度的境况下,那将导致其他用户等得太久。

  了解了一道和异步的定义之后,咱们应该对ajax为啥可以升级用户体验应该相比清晰了,它是采取异步请求方式的。打个比方,即使现在你家里所在的小区因
某种情形而面临停水,现在有关单位颁发了二种方案,一是全然停水8个钟头,在这8个钟头内完全停水,8个时辰后恢复生机正常。二是不完全停水10 个钟头,在那10个小时内水没有完全断,只是流量比原先小了累累,在10个钟头后回复正常流量,那么,假使是你你会拔取哪个种类办法呢?显著是后者。 

5、ajax所包括的技巧

    大家都掌握ajax并非一种新的技能,而是二种原始技术的结合体。它由下列技术组合而成。

   1.使用CSS和XHTML来表示。

   2. 用到DOM模型来交互和动态突显。

   3.利用XMLHttpRequest来和服务器举办异步通信。

   4.施用javascript来绑定和调用。

  在上面几中技术中,除了XmlHttpRequest对象以外,其余具有的技能都是基于web标准还要已经取得了大规模使用的,XMLHttpRequest就算眼前还平昔不被W3C所选择,可是它早已是一个真情的正式,因为近日大致所有的主流浏览器都襄助它。

6、ajax原理和XmlHttpRequest对象

  Ajax的法则简单的话通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数量,然后用javascript来操作DOM而立异页面。那中间最重大的一步就是从服务器获得请求数据。要理解那么些进程和法则,大家不可能不对 XMLHttpRequest有所通晓。

  XMLHttpRequest是ajax的基本机制,它是在IE5中率先引入的,是一种帮衬异步请求的技巧。一言以蔽之,也就是javascript可以立刻向服务器提议请求和拍卖响应,而不封堵用户。达到无刷新的功能。

   所以我们先从XMLHttpRequest讲起,来探望它的劳作规律。

   首先,大家先来探望XMLHttpRequest这些目的的特性。

   它的性质有:

    onreadystatechange  每便状态改变所接触事件的事件处理程序。

    responseText     从服务器进度再次回到数据的字符串形式。

    responseXML    从服务器进程再次来到的DOM包容的文档数据对象。

 
  status           从服务器重临的数字代码,比如大规模的404(未找到)和200(已就绪)

    status Text       伴随状态码的字符串音讯

    readyState       对象景况值

    0 (未发轫化) 对象已创建,可是尚未早先化(尚未调用open方法)

    1 (开端化) 对象已确立,尚未调用send方法

    2 (发送数据) send方法已调用,不过当前的情形及http头未知

    3
(数据传送中) 已吸收部分数据,因为响应及http头不全,那时通过responseBody和responseText获取部分数额会出现谬误,

    4
(完结) 数据接受落成,此时可以通过通过responseXml和responseText获取完整的应对数据

  可是,由于各浏览器之间存在差距,所以创制一个XMLHttpRequest对象可能要求分裂的主意。那么些差别主要浮现在IE和其他浏览器之间。下边是一个相比标准的创建XMLHttpRequest对象的措施。

 

function CreateXmlHttp() {

    //非IE浏览器创建XmlHttpRequest对象
    if (window.XmlHttpRequest) {
        xmlhttp = new XmlHttpRequest();
    }

    //IE浏览器创建XmlHttpRequest对象
    if (window.ActiveXObject) {
        try {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (e) {
            try {
                xmlhttp = new ActiveXObject("msxml2.XMLHTTP");
            }
            catch (ex) { }
        }
    }
}

function Ustbwuyi() {

    var data = document.getElementById("username").value;
    CreateXmlHttp();
    if (!xmlhttp) {
        alert("创建xmlhttp对象异常!");
        return false;
    }

    xmlhttp.open("POST", url, false);

    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4) {
            document.getElementById("user1").innerHTML = "数据正在加载...";
            if (xmlhttp.status == 200) {
                document.write(xmlhttp.responseText);
            }
        }
    }
    xmlhttp.send();
} 

  如上所示,函数首先检查XMLHttpRequest的完整情形并且有限支撑它曾经达成(readyStatus=4),即数据已经发送达成。然后根据服务器的设定询问请求状态,假使全勤已经就绪(status=200),那么就举行下边须求的操作。

  对于XmlHttpRequest的多少个章程,open和send,其中open方法指定了:

  a、向服务器交由数据的连串,即post如故get。

  b、请求的url地址和传递的参数。

     
c、传输方式,false为同步,true为异步。默许为true。假诺是异步通讯情势(true),客户机就不等待服务器的响应;要是是一道方式(false),客户机就要等到服务器再次来到新闻后才去实践别的操作。大家须要按照实际需求来指定同步方式,在一些页面中,可能会暴发五个请求,甚至是有团体有计划有队形大规模的高强度的request,而后一个是会覆盖前一个的,那个时候自然要指定同步形式。

    Send方法用来发送请求。

  知道了XMLHttpRequest的干活流程,我们可以观察,XMLHttpRequest是截然用来向服务器发出一个呼吁的,它的机能也局限于此,但它的作用是一切ajax达成的严重性,因为ajax无非是八个经过,发出请求和响应请求。并且它完全是一种客户端的技艺。而XMLHttpRequest正是处理了劳动器端和客户端通讯的题材因而才会这么的要紧。

  现在,大家对ajax的原理大致可以有一个打听了。大家可以把劳动器端看成一个数目接口,它回到的是一个纯文本流,当然,这几个文本流可以是XML格式,可以是Html,可以是Javascript代码,也得以只是一个字符串。那时候,XMLHttpRequest向服务器端请求那一个页面,服务器端将文件的结果写入页面,那和常见的web开发流程是平等的,差其他是,客户端在异步获取这些结果后,不是一贯显示在页面,而是先由javascript来拍卖,然后再突显在页面。至于现在风靡的很多ajax控件,比如magicajax等,可以重返DataSet等其他数据类型,只是将以此进程封装了的结果,本质上他们并从未什么样太大的界别。

7、ajax的优点

  Ajax的给我们带来的裨益大家基本上都深有体会,在那边我只简简单单的讲几点:

  1、最大的一点是页面无刷新,在页面内与服务器通讯,给用户的体验相当好。

  2、使用异步方式与服务器通讯,不须求打断用户的操作,具有越来越飞速的响应能力。

电脑软件,  3、可以把之前有些服务器负责的做事转嫁到客户端,利用客户端闲置的力量来拍卖,减轻服务器和带宽的承受,节约空间和宽带租用花费。并且减轻服务器的负担,ajax的标准是“按需取数据”,可以最大程度的回落冗余请求,和响应对服务器造成的担当。

  4、基于标准化的并被大规模支持的技巧,不须求下载插件或者小程序。

8、ajax的缺点

  上面我第一讲一讲ajax的老毛病,因为日常大家基本上注意的都是ajax给大家所带来的利益诸如用户体验的升级。而对ajax所带来的缺陷有所忽略。

  上面所解说的ajax的通病都是它天生所发出的。

  
 1、ajax干掉了back按钮,即对浏览器后退机制的损坏。后退按钮是一个正规的web站点的要紧意义,可是它无法和js进行很好的合作。那是ajax所带来的一个比较严重的题材,因为用户往往是目的在于可以因而后退来撤消前三次操作的。那么对于这么些题目有没有办法?答案是一定的,用过Gmail的知晓,Gmail上面选拔的ajax技术解决了那几个题目,在Gmail下边是可未来退的,不过,它也并不可以更改ajax的机制,它只是应用的一个相比笨然则实惠的艺术,即用户单击后退按钮访问历史记录时,通过创立或使用一个隐蔽的IFRAME来再现页面上的变动。(例如,当用户在GoogleMaps中单击后退时,它在一个隐身的IFRAME中举办搜寻,然后将寻找结果反映到Ajax元素上,以便将应用程序状态上涨到马上的情状。)

而是,尽管说那几个问题是足以缓解的,不过它所带动的开发开支是越发高的,和ajax框架所要求的短平快支付是相背离的。那是ajax所带来的一个格外严重的题目。

     2、安全问题

技巧并且也对IT集团带来了新的安全威迫,ajax技术就不啻对商厦数目建立了一个向来通道。那使得开发者在不注意间会揭破比以前越多的数据和服务器逻辑。ajax的逻辑可以对客户端的新余扫描技术隐藏起来,允许黑客从远端服务器上创建新的口诛笔伐。还有ajax也难以防止一些已知的平安缺陷,诸如跨站点脚步攻击、SQL注入攻击和按照credentials的安全漏洞等。

     3、对寻找引擎的支撑相比较弱。

    
4、破坏了先后的不胜机制。至少从脚下总的来说,像ajax.dll,ajaxpro.dll那些ajax框架是会毁掉程序的丰富机制的。关于那个题材,我一度在付出进度中相遇过,可是查了须臾间网上大致从未相关的牵线。后来自我自己做了五次考试,分别选取ajax和观念的form提交的情势来删除一条数据……给我们的调剂带来了很大的勤奋。

    
5、此外,像其他方面的一部分题目,比如说违背了url和资源一定的初衷。例如,我给您一个url地址,如若选拔了ajax技术,也许你在该url地址上面看到的和自我在那个url地址下见到的内容是不一样的。这么些和资源一定的初衷是相背弃的。

    
6、一些手持设备(如手机、PDA等)现在还无法很好的支持ajax,比如说我们在手机的浏览器上开辟采纳ajax技术的网站时,它近日是不襄助的,当然,那么些问题和我们没太多关系。

9、ajax的三种框架

  近来我们使用的比较多的ajax框架重要有ajax.dll,ajaxpro.dll,magicajax.dll 以及微软的atlas框架。Ajax.dll和Ajaxpro.dll那多个框架差距不大,而magicajax.dll只是包装得更决心一些,比如说它能够直接再次来到DataSet数据集,前边大家早就说过,ajax重返的都是字符串,magicajax只是对它进行了封装而已。不过它的那个特性可以给我们带来很大的便民,比如说大家的页面有一个列表,而列表的多少是接踵而来变化的,那么大家得以行使magicajax来处理,操作很不难,添加magicajax之后,将要更新的列表控件放在magicajax的控件之内,然后在pageload里面定义更新间隔的岁月就ok了,atlas的规律和magicajax大致。不过,要求留意的一个题目是,那两种框架都只辅助IE,没有展开浏览器包容方面的拍卖,用反编译工具察看他们的代码就可以知晓。

  除了那两种框架之外,大家平时采用的相比多的办法是团结创立xmlHttpRequest对象,这种办法和前边的二种框架相比更具备灵活性。其它,在此间还提一下aspnet2.0自带的异步回调接口,它和ajax一样也可以完成部分的无刷新,但它的兑现实际上也是基于xmlhttprequest对象的,别的也是只帮助IE,当然那是微软的一个竞争策略。 

10、ajax示例

  验证用户名是或不是注册。

  接纳三种办法

    1 ajax.dll

    2 自己写xmlhttprequest对象

  ajax中常见到的一些谬误

      1 安顿的题材

    在pageload里面配备该页面的时候

11、其他

  在后台调用的点子里调用了前台的一对…

  此文要感谢:http://www.cnblogs.com/ustbwuyi/archive/2007/02/08/645061.html\#2215165

相关文章

No Comments, Be The First!
近期评论
    功能
    网站地图xml地图