Ajax简介

  

  或许,很多人都会认为已经学过了的技术没必要再回顾,也懒得去实践...这种心理问题我想你应该也有过,懒惰是人之本性嘛,至少我曾经是。

  

  好了,木木就让小伙伴们来瞧瞧我最近学到的东西,学的不好不要见怪哟。

  

   注解:知识源于积累,分享。希望看到木木的献丑大家不要惊慌,木木会更快更正.....

  Ajax:

  

  Ajax到底有什么作用叻?

    1.通过无刷新页面与服务器交互数据来提高客户端体验;

    2.通过其异步调用机制增加web程序性能,降低服务器压力;

    首先,Ajax并不是很新的技术,它是一系列技术的整合。可以实现局部刷新页面。  (改变页面中某个块的值,不会刷新整个页面)。

    Ajax的组成:Asynchronous JavaScript And XML。

    注解:

       Asynchronous:异步。

       JavaScript:解释性语言。        XML:数据结构语言。  

    那么Ajax同步和异步呢?

       同步:客户端脚本在未接受到服务器端响应之前,会一直等待,直到接受响应后才会继续执行。        异步:客户端代码和服务器端同时执行。   

 

    下面我们来初步了解Ajax的技术原理:

        服务器           

           ↓↑          

      XMLHttpRequest            (XMLHttpRequest:JavaScript原生对象的一个请求。   返回true  和false)  

         ↓↑             

       JavaScript         (客户端脚本)             ↓                 

      ------ -----     

        ↓  ↓          

      CSS        DOM        (CSS样式)

    

    -----------------------------------------------------------------------------------------------      

    *  [将注册账号给服务器端,让服务器验证这个账号是否已经注册,然后给客户端提示信息]*            

    ***** Ajax同步请求                *****      ***** ------>发送请求            

    *****      - ->                      

     *****      -客户端 -> true,false    服务器端           -      

    -       <-                                                  -      

    -   <-------------------  -  

     [[客户端接受  -   返回响应之后 -   会根据不同的  - 返回结果提示  -   不同的信息。]]   

    -----------------------------------------------------------------------------------------------    

 

   以上我们对Ajax有那么一丁点儿的初步认知后,那么我们即将步入Ajax的发展历史:

  

   XMLHttpRequest:

    XMLHttpRequest是一种用于在 Web 浏览器和 Web 服务器间传输数据消息的 JavaScript API。它支持浏览器使用 HTTP POST(将数据传到服务器)或 GET 请求(从后台服务器访问数据)。

    该 API 是大多数 Ajax 交互的核心,也是现代 Web 开发的一项基本技术。

  

    XMLHttpRequest最先出现在IE5种,最初是由 Alex Hopmann 编写的 Microsoft ® ActiveX® 控件,创建 XHR 是为了处理 Microsoft Outlook®   Web Access,

    旨在解决高级(当时)前端接口和 Microsoft       Exchange Server 间的交互。W3C标准支持。。。。(由于本人以前太懒,目前就这么多)

  

  

  

    请求:有四种方式

      1. open() 发起服务器连接。可以带参数:

      • method将要使用的 HTTP 方法(可以是 POST 或者 GET
      • url请求的 URL
      • async 可选布尔参数,表明请求是否异步(该参数的默认值为 Ture)
      • user一个可选用户名,供认证使用
      • password一个可选密码,供认证使用

      2. setRequestHeader() 设置请求报头,带有两个参数:报头及其相关值

      3.send() 发送请求。该方法带有一个可选参数,包含 POST 请求的正文

      4.abort() 中止请求

  

   响应:属性和方法  

    • status请求的标准 HTTP 状态(例如,成功请求将返回 200
    • statusText包括 Web 服务器返回的完整响应字符串,其中包括响应文本(例如,304 Not Modified
    • getResponseHeader()返回特定报头内容;请求报头名称是其惟一参数
    • getAllResponseHeaders()返回所有响应报头的文本
    • responseText响应文本的字符串表示
    • responseXML响应文本的 XML 表示,一个包含 DOM 和所有相关 DOM 方法的文档片段

 

    readyState

    

    实例化完成后,XMLHttpRequest 对象有 5 种状态,使用以下值表示:

    • 0: UNSENT。表示对象已创建
    • 1: OPENED。表示 open() 方法已成功调用
    • 2: HEADERS_RECEIVED。表示来自请求的报头已收到
    • 3: LOADING。表示响应报头已下载
    • 4: DONE。表示请求完成,但是并没有指出请求是否成功或返回预期值(查询响应和标准 HTTP 报头来估量请求的健康状况)

    

      Ajax框架简介:

    AJAX模式

     在一个发送请求到服务端的应用中,必须包含请求顺序、优先级、超时响应、错误处理及回调,其中许多元素已经在Web服务中包含了,

     就像现在的SOA。AJAX开发人员拥有一个完整的系统架构知识。同时,随着技术的成熟还会有许多地方需要改进,特别是UI部分的易用性。

     AJAX开发与传统的CS开发有很大的不同。这些不同引入了新的编程问题,最大的问题在于易用性。

     由于AJAX依赖浏览器的JavaScript和XML,浏览器的兼容性和支持的标准也变得和JavaScript的运行时性能一样重要了。

           这些问题中的大部分来源于浏览器、服务器和技术的组合,因此必须理解如何才能最好的使用这些技术。

       综合各种变化的技术和强耦合的客户服务端环境,AJAX提出了一种新的开发方式。AJAX开发人员必须理解传统的MVC架构,这限制了应用层次之间的边界。
       同时,开发人员还需要考虑CS环境的外部和使用AJAX技术来重定型MVC边界。最重要的是,AJAX开发人员必须禁止以页面集合的方式来考虑Web应用而需要将其认为是单个页面。
              一旦UI设计与服务架构之间的范围被严格区分开来后,开发人员就需要更新和变化的技术集合了。

                                                               [(注:Ajax模式思路介绍摘自百度文库)]

 

         浏览器框架    [这里小编就介绍作用就行了,至于详细的要靠大家去研究了 引用自百度文库]

    

    

    Dojo  

      

      Dojo是最老的框架之一,于2004年9月开始开发。这个项目的目标是建立充分利用XHR的DHTML工具包,并把重心放在可用性问题上。
      Dojo只有几个文件,不用处理XHR的建立,只需调用bind方法,并传入想调用的URL和回调方法即可。就这么简单。还可以使用bind方法来提交整个 表单

 

    Flash/JavaScript集成包

      

      在Ajax之前,Flash很是风行,很多Web网站都建立在Flash平台上。那些曾对Flash狠下一番功夫的人不想完全放弃Flash,利用这个开源项目就能同时利用Ajax技术。
      这个工具包在所有主要浏览器上都能用,使得JavaScript能够调用ActionScript,ActionScript也能调用JavaScript。可以来回传递大量对象,包括日期、串和 数组

    Google AJAXSLT

      基于Google Maps的工作,Google AJAXSLT是使用XPath的XSL转换(XSLT)的JavaScript实现。XSLT可以把XML文档转换为其他语言,

      如HTML。AJAXSLT允许使用JavaScript在浏览器上直接完成这些转换。

    libXmlRequest

      

      libXmlRequest框架也是比较老的一个框架,早在2003年就已经发布了。
      这个框架包括一个JavaScript文件,它相当于XMLHttpRequest对象的一个包装器,提供了两个 重载的请求函数:getXml和postXml。
      另外,它有一些处理缓冲池和缓存的属性,还有一些工具函数    处理常见的任务,如解析来自服务器的XML以及修改DOM。

    RSLite

      RSLite是远程脚本的一个实现,由Brent       Ashley编写。从技术上讲,它没有利用作为Ajax核心的XMLHttpRequest对象,但是得到了更广泛的浏览器支持。

      如果你需要支持原来的浏览器,而这些浏览器不支持XMLHttpRequest对象,就可以试试RSLite。RSLite是相当轻量级的,已从2000年发展至今 。

    SACK

      

      SACK(简单Ajax代码包)开发为一个瘦包装器,包装了XMLHttpRequest对象。
      其作者Gregory Wild-Smith认为,其他的许多框架太过复杂,而且做了许多本不该它们完成的任务。所以他创建了SACK来简化Ajax的开发。
      SACK包括几个可以简化服务器调用的方法。比起具体创建适当的XMLHttpRequest对象实例来说,用更少的代码就能向服务器发送数据,并处理响应。

    sarrisa

      

      sarissa有一点是Ajax做不到的,它以一种独立于浏览器的方式对XML API提供了包装支持。
      利用这个框架,创建和使用XMLHttpRequest对象实在是小菜一碟(不用检查浏览器,它已经为你处理好了)。
      另外,sarissa还对使用DOM提供了支持。类似于Google AJAXSLT,sarissa也支持XSLT,它模拟了IE上的Mozilla处理器。

    XHConn

      

      XHConn类似于SACK,它相当于XMLHttpRequest对象的一个简单包装器。
      你不用直接使用XMLHttpRequest对象,只需首先启动一个XHConn实例,与使用XHR同样的方法加以处理。
      也就是说,无需浏览器检查,并提供了一种简单的方法来确定浏览器是否支持XHR(这对于需要妥善降级的网站尤其方便)。

    jquery

      

      设计思想
        简洁的思想:几乎所有操作都是以选择DOM元素(有强大的Selector)开始,然后是对其的操作(Chaining等特性)。
      优点
        小,压缩后代码只有20多k(无压缩代码94k)。
        Selector和DOM操作的方便:jQuery的Selector与 mootools的Element.Selectors.js比较,CSS Selector, XPath Selector(1.2后已删除)
      Chaining:总是返回一个jQuery对象,可以连续操作。
        文档的完整,易用性(每个API都有完整的例子,这是其它框架现在不能比的),而且网上还有很多其它的文档,书籍。
        应用的广泛,包括google code也使用了jQuery。

    

 

  服务器框架  [部分引用自百度文库]

 

    CPAINT

    

      CPAINT(跨平台异步接口工具包)在服务器端实现Ajax,它向客户返回文本或DOM文档对象,以便用JavaScript处理。
      CPAINT在大多数主要浏览器上都能用,而且支持远程脚本,在GPL协议下发布。这个项目的文档相当完备,不过,CPAINT只支持PHP和ASP。
 
      Sajax
      
      利用Sajax,可以直接从JavaScript调用服务器端代码。
      Sajax支持Perl、Python、Ruby和ASP等语言(不过奇怪的是,目前并不支持Java)。
      安装Sajax相当简单,只涉及针对特定服务器语言的简单的库。Sajax的开发社区极其活跃。
      已经确认的只有IE 6和Mozilla/Firefox提供Sajax支持,不过本书作者认为它在Safari上也能很好地使用。
 
      JSON/JSON-RPC
      JavaScript对象注解(JSON)是一种文本格式,与XML很相似,可以用于交换数据。
         JSON的设计要保证两方面,一方面便于人阅读,另一方面便于机器解析,它使用了C系列语言类似的约定。
         与JSON相关的还有JSON-RPC,这是一个远程过程调用(RPC)协议,类似于XML-RPC,但面向的是JSON语言。
         作为规约,JSON-RPC在许多语言中都有实现,包括Java、Ruby、Python和Perl。
    
      Direct Web Remoting
      
      利用Direct Web Remoting       (DWR),你能从JavaScript直接调用Java方法,就好像它们是浏览器的本地方法一样。
      尽管后台严格限制为Java,但DWR仍然是最流行的框架之一。
    
    SWATO
 
      Shift Web Applications TO (SWATO)也是一个基于Java的Ajax框架解决方案。
      SWATO在所有Servlet       2.3或更高版本的容器中都能工作,类似于DWR,它也需要对配置文件做一些更新。
      有意思的是,SWATO充分利用了JSON来完成客户和服务器之间数据的编组,与本附录中讨论的其他一些框架相似,它也允许从浏览器调用服务器端Java。
      为了帮助开发人员,SWATO包括许多可复用的组件,如自动完成文本框等。
 
      Java BluePrints

      Sun的BluePrints小组一直忙于将Ajax纳入他们的解决方案目录(Solutions Catalog)中。S

       olutions Catalog包括一些很好的文档,描述了如何使用基本Ajax,如何实现自动完成,如何创建一个进度条以及如何验证表单。

         它还包括JavaServer Faces组件。

 

    Ajax Net

        Ajax Net之于Microsoft         .NET就相当于SAJAX、DWR和SWATO之于Java。利用AjaxNet,你能从JavaScript客户调用.NET方法。

        AjaxNet包括一个DLL,可以与VB.NET或C#一同使用。

        AjaxNet的文档很好地展示了针对各种场景的解决方案,而且能得到相关的源代码。不过,AjaxNet的许可协议很不明确。

 

      Microsoft的Atlas项目

        

      Microsoft在Ajax领域涉足的时间已经不短了,毕竟,XMLHttpRequest对象是Microsoft发明的,而且从1998年开始就已经用在Web版本的Outlook中。
      Microsoft把重点放在提供一个更加健壮的 开发环境上,从而让开发人员的工作更轻松。
      Microsoft的着眼点还不只这些,还力图提供客户端脚本框架、ASPNET控件和Web服务集成。Microsoft还发布了Atlas项目,作为其ASPNET 2.0预览版的一部分。
      有Microsoft的介入,开发人员的工具包可能会比今天充实得多。

     Ruby on Rails

      

       Rails是一个令人兴奋的新Web框架,建立在Ruby语言基础上。
       如今,Rails已经得到了大量关注(在Google上查一下Rails,可以找到更多信息),这是因为使用Rails能够快速开发基于Web的应用。
       开发Basecamp时,37signals小组提出名为Rails的框架。Basecamp正是Ajax应用的主要示例,所以看到Rails对Ajax提供如此充分的支持,我们不应感到奇怪。
       Rails有许多内置的JavaScript库,其中包装了很多常用的特性,它还包含一个模块,其中包装了Ruby的JavaScript调用。如果你在使用Rails,就会发现Ajax非常简单。

 

      

  最后木木带大家进入一些创建实例代码:

 

 

    <script type="text/javascript">        

      

      1.创建原生对象XMLHttpRequest  

      2.设置回调函数  

      3.初始化对象

        4.发送请求

      //创建原生态对象 XMLHttpRequest  

      function createXMLHttpRequest(){   //针对IE5,IE6浏览器   

        if(window.ActiveXObject){    

        return new ActiveXObject("Microsoft.XMLHTTP");   

      }else if(window.XMLHttpRequest){ //其余的浏览器    

        return new XMLHttpRequest;   }

       }

 

    //创建Ajax执行方法      

      $(function(){       

      $("使用者属性名称").对应事件(function(){        

      //1、创建原生对象XMLHttpRequest        

      var xhr = createXMLHttpRequest();        

      //2、设置回调函数        

      xhr.onreadystatechange = function(){         

      //判断状态 是否正常加载完毕并且数据完成加载         

      if(xhr.readyState == 4 && xhr.Status == 200){          

      document.getElementById('加载到的容器名称').innerHTML = xhr.responseText;         

      }      

     }      

      //3、初始化对象      

      xhr.open("提交方式","路径",true/false);      

      //4、发送请求      

      xhr.send("指定请求的路径(服务器端的页面)");     

    });    

  });

         </script>       

 

    

转载于:https://www.cnblogs.com/Roguewl/p/4634427.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值