zoukankan      html  css  js  c++  java
  • AJAX学习

    一、AJAX简介

    AJAX是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。

    二、什么是AJAX?

    AJAX全称为 Asynchronous JavaScript and XML(异步的JavaScript和XML)。

    AJAX是一种用于快速创建动态网页的技术。

    通过在后台与服务器进行少量的数据交换,AJAX可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

    传统的网页(不适用AJAX)如果需要更新内容,必须重载整个网页面。

    AJAX并不是一种新的编程语言,而是几种原有技术的结合体。它有以下几种技术组合而成:

    • HTML/XHTML——主要的内容表示语言
    • CSS——为数据提供样式
    • DOM——对已载入的页面进行动态更新
    • XML——作为转换数据的格式
    • XSLT——将XML转换为XHTML(用CSS修饰样式)
    • XMLHttp——用XMLHTTPRequest来和服务器进行异步通信,是主要的通信代理
    • JavaScript——用来编写AJAX引擎的脚本语言

    三、同步交互与异步交互

    同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求。

    异步交互:客户端发出一个请求后,无需等待服务器的响应结束,就可以发出第二个请求。

    四、AJAX工作原理

    AJAX的原理简单来说通过XMLHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用JavaScript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。要清楚这个过程和原理,我们必须对XmlHttpRequest有所了解。

     五、AJAX创建XMLHttpRequest对象

    XMLHttpRequest是AJAX的基础。

    工作原理:

    浏览器先把请求发送到XMLHttpRequest异步对象之中,异步对象对请求进行封装,然后再发送给服务器。服务器并不是以转发的方式响应,而是以流的方式把数据返回给浏览器。XMLHttpRequest异步对象会不停监听服务器状态的变化,得到服务器返回的数据,就写到浏览器上。

    1.XMLHttpRequest对象

    所有的现代浏览器均支持XMLHttpRequest对象(IE5和IE6使用ActiveXObject)。

    XMLHttpRequest用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

    2.创建XMLHttpRequest对象

    语法:variable = new XMLHttpRequest();

    老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象:

    variable=new ActiveXObject("Microsoft.XMLHTTP");
     
    六、AJAX向服务器发送请求
    XMLHttpRequest对象用于和服务器交换数据。
    1、向服务器发送数据
    如需将请求发送到服务器,我们需要使用XMLHttpRequest对象的 open() 和 send() 方法。
    xmlhttp.open("GET", "ajax_info.txt", true);
    xmlhttp.send();

    方法

    描述

    open(method, url, async)

    请求规定的类型、URL以及是否异步处理请求

    •   method:请求的类型,GET或POST
    •   url:文件在服务器上的位置
    •   async:true(异步)或false(同步)

    send(string)

    将请求发送到服务器。

    •  string:仅用于POST请求

     
     

    2、GET还是POST?

    与POST相比,GET更简单也更快,并且在大部分情况下都能用。

    然而,在以下情况中,请使用POST请求:

    1)无法使用缓存文件(更新服务器上的文件或数据库)

    2)向服务器发送大量数据(POST没有数据量限制)

    3)发送包含未知字符的用户输入时, POST 比 GET 更稳定也更可靠

     3、GET请求

    如果希望通过GET方法发送信息,需向URL添加信息:

    xmlhttp.open("GET", "/try/ajax/demo_get2.php?fname=Henry&lname=Ford", ture);
    xmlhttp.send();

    4、POST请求

    如果需要向 HTML 表单那样 POST 数据,请使用 setRequestHeader() 来添加 HTTP 头,然后在 send() 方法中规定要发送的数据。

    xmlhttp.open("POST", "/try/ajax/demo_post2.php", true);
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlhttp.send("fname=Henry&lname=Ford");

    方法

    描述

    setRequestHeader(header, value)

    向请求添加HTTP 头

    •   header:规定头的名称
    •   value:规定头的值

    七、服务器响应

    如需获得来自服务器的响应,需使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。

    属性

    描述

                           responseText

    获得字符串形式的响应数据

                           responseXML

    获得XML形式的响应数据

    responseText 属性

    responseText 属性返回字符串形式的响应,因此您可以这样使用:

    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

     八、onreadystatechange事件

    当请求被发送到服务器的时候,我们需要执行一些基于相应的任务。每当readyState发生改变的时候,就会触发onreadystatechange事件。readyState属性存有 XMLHttpRequest 的状态信息。下面是XMLHttpRequest 对象的三个重要属性:

    属性

    描述

    onreadystatechange

    存储函数(或函数名),每当readyState属性改变时,就会调用该函数

    readyState

    存有 XMLHttpRequest 的状态,从0到4发生变化。

    • 0:请求未初始化
    • 1:服务器已建立连接
    • 2:请求已接收
    • 3:请求处理中
    • 4:请求已完成,且响应已就绪

    status

    200:“OK”

    404:未找到页面

    在 onreadystatechange 事件中,我们规定当服务器响应已经做好被处理的准备时所执行的任务。

    当readyState等于4且状态为200时,表示响应已就绪。

    xmlhttp.onreadystatechange = function(){
            if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
                  document.getElementById("myDiv").innerHTML = xmlhttp.responseText;
            } 
    }        

    注意: onreadystatechange 事件被触发 4 次(0 - 4), 分别是: 0-1、1-2、2-3、3-4,对应着 readyState 的每个变化。

  • 相关阅读:
    mysql同步之otter/canal环境搭建完整详细版
    Linux安装aria2
    mysql多源复制(多主一从)配置
    分布式调度框架TBSchedule使用方法
    hbase shell插入根据条件查询数据
    hive内部表&外部表介绍
    Canal( 增量数据订阅与消费 )的理解及应用
    tidb入门
    ES命令
    java8新特性
  • 原文地址:https://www.cnblogs.com/peng19920430/p/10958765.html
Copyright © 2011-2022 走看看