zoukankan      html  css  js  c++  java
  • ajax的原理解析

    一、关于同步与异步的分析:

        异步传输是面向字符的传输,它的单位是字符;而同步传输是面向比特的传输,它的单位是桢,它传输的时候要求接受方和发送方的时钟是保持一致的。而ajax就是采用的异步请求方式的。

        打个比方,如果现在你家里所在的小区因 某种情况而面临停水,现在有关部门公布了两种方案,一是完全停水8个小时,在这8个小时内完全停水,8个小时后恢复正常。二是不完全停水10 个小时,在这10个小时内水没有完全断,只是流量比原来小了很多,在10个小时后恢复正常流量,那么,如果是你你会选择哪种方式呢?显然是后者。

    二、ajax所包含的技术:

        大家都知道ajax并非一种新的技术,而是几种原有技术的结合体。它由下列技术组合而成。

       1.使用CSS和XHTML来表示。

       2. 使用DOM模型来交互和动态显示。

       3.使用XMLHttpRequest来和服务器进行异步通信。

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

        在上面几中技术中,除了XmlHttpRequest对象以外,其它所有的技术都是基于web标准并且已经得到了广泛使用的,XMLHttpRequest虽然目前还没有被W3C所采纳,但是它已经是一个事实的标准,因为目前几乎所有的主流浏览器都支持它。

    三、ajax的原理和xmlhttprequest:

        ajax的原理简单说就是:通过xmlhttprequest对象来向服务器发异步请求,从服务器获取数据,然后通过JavaScript来操作DOM对象从而更新页面。

    那Ajax是如何从浏览器发送Http请求到服务器呢?

      这就得使用一个重要的对象XMLHttpRequest。

      那首先了解一下XMLHttpRequest对象的属性和方法。

      主要的属性:

    readyState属性有五个状态值。

    0:是uninitialized,未初始化。已经创建了XMLHttpRequest对象但是未初始化。
    1:是loading,send for request but not called .已经开始准备好要发送了。
    2:是loaded, send called,headers and status are available。已经发送,但是还没有收到响应。
    3:是interactive,downloading response,but responseText only partial set.正在接受响应,但是还不完整。
    4:是completed,finish downloading.接受响应完毕。

    responseText:服务器返回的响应文本。只有当readyState>=3的时候才有值,根据readyState的状态值,可以知道,当readyState=3,返回的响应文本不完整,只有readyState=4,完全返回,才能接受全部的响应文本。

    responseXML:response  as Dom Document object。响应信息是xml,可以解析为Dom对象。

    status:服务器的Http状态码,若是200,则表示OK,404,表示为未找到。

    statusText:服务器http状态码的文本。比如OK,Not Found。

      主要的方法:

    open(method,url,boolean):打开XMLHttpRequest对象。其中method方法有get,post,delete,put。若是查数据,从服务器中得到一定的数据,则使用get。若是直接提交到服务器中,更新一定的数据,则使用post;url是请求资源的地址。第三个参数表示是否使用异步。默认情况是true,因为Ajax的特点就是异步传送。若使用同步则false。异步和同步上述已经举例。

    send(body):发送请求Ajax引擎,让Ajax引擎操作。其中发送的内容可以是需要的参数,若是没有参数,直接send(null)

      那如何使用Ajax技术?

    首先,有客户端事件触发Ajax事件。

    然后,创建xmlHttpRequest对象,根据浏览器不同,创建的xmlHttpRequest对象不同。用open调用,用send发送请求给Ajax引擎。

    最后,执行完毕后,把结果返回给客户端。

  • 相关阅读:
    记一次省赛总结
    护网杯一道密码学的感想
    配置phpstudy+phpstorm+xdebug环境
    python 模板注入
    hash扩展攻击本地实验
    kali rolling更新源之gpg和dirmngr问题
    web信息泄露注意事项
    ctf常见php弱类型分析
    文件上传小结
    ctf变量覆盖漏洞
  • 原文地址:https://www.cnblogs.com/haishiniu123/p/7469650.html
Copyright © 2011-2022 走看看