• 浅谈ajax


    ajax介绍

           ajax即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术,它并不是一门新的语言。

           通过在后台与服务器进行少量数据交换,ajax可以使网页实现异步更新。       

           这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。而传统的网页如果需要更新内容,必需重载整个网页面。

    ajax技术体系

             XHTML和CSS

       使用文档对象模型(Document Object Model)作动态显示和交互

       使用XML和XSLT做数据交互和操作

       使用XMLHttpRequest进行异步数据接收

    ajax的工作流程

    关于XmlHttpRequest对象

     

    属性:

       readyState

           0: 请求未初始化

           1: 服务器连接已建立

           2: 请求已接收

           3: 请求处理中

           4: 请求已完成,且响应已就绪

       State

           200:     "OK"

           404: 未找到页面

       responseText

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

       responseXML

           获得 XML 形式的响应数据。

       onreadystatechange

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

    方法:

    xmlHttpRequst对象利用send()和open()方法与服务器进行交互。

        open(method,url,async)

            method:请求的类型;GET 或 POST

            url:文件在服务器上的位置

            async:true(异步)或 false(同步)

        send(string) 

              string:仅用于 POST 请求

    如果是post请求,必须使用 setRequestHeader() 来添加 HTTP 头。然后在send() 方法中设置发送的数据,例如:

    xmlhttp.open("POST","ajax_test.asp",true); 

    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 

    xmlhttp.send("fname=Bill&lname=Gates");

    ajax的使用步骤

     

    1、创建XMLHttpRequest对象

        不同的浏览器使用的异步调用对象也有所不同,在IE浏览器中异步调用使用的是XMLHTTP组件中的XMLHttpRequest对象,而在Netscape、Firefox浏览器中则直接使用XMLHttpRequest组件。因此,在不同浏览器中创建XMLHttpRequest对象的方式都有所不同。

          在IE浏览器中创建XMLHttpRequest对象的方式如下所示:

       var xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");

              在Netscape浏览器中创建XMLHttpRequest对象的方式如下所示:

       var xmlHttpRequest = new XMLHttpRequest();

    2、创建HTTP请求

          创建了XMLHttpRequest对象之后,必须为XMLHttpRequest对象创建HTTP请求,用于说明XMLHttpRequest对象要从哪里获取数据.通常可以是网站中的数据,也可以是本地中其他文件中的数据.

          创建HTTP请求可以使用XMLHttpRequest对象的open()方法,其语法代码如下所示:

          XMLHttpRequest.open(method,URL,flag,name,password)

    代码中的参数解释如下所示:

          method:该参数用于指定HTTP的请求方法,一共有get、post、head、put、delete五种方法,常用的方法为get和post。

          URL:该参数用于指定HTTP请求的URL地址,可以是绝对URL,也可以是相对URL。

          flag:该参数为可选参数,参数值为布尔型。该参数用于指定是否使用异步方式。true表示异步方式、false表示同步方式,默认为true。

          name:该参数为可选参数,用于输入用户名。如果服务器需要验证,则必须使用该参数。

          password:该参数为可选参数,用于输入密码。如果服务器需要验证,则必须使用该参数。通常可以使用以下代码来访问一个网站文件的内容。

    3、设置响应HTTP请求状态变化的函数

            创建完HTTP请求之后,应该就可以将HTTP请求发送给Web服务器了。然而,发送HTTP请求的目的是为了接收从服务器中返回的数据。从创建XMLHttpRequest对象开始,到发送数据、接收数据、XMLHttpRequest对象一共会经历以下5中状态。

          ⑴未初始化状态。在创建完XMLHttpRequest对象时,该对象处于未初始化状态,此时XMLHttpRequest对象的readyState属性值为0。

          ⑵初始化状态。在创建完XMLHttpRequest对象后使用open()方法创建了HTTP请求时,该对象处于初始化状态。此时XMLHttpRequest对象的readyState属性值为1。

          ⑶发送数据状态。在初始化XMLHttpRequest对象后,使用send()方法发送数据时,该对象处于发送数据状态,此时XMLHttpRequest对象的readyState属性值为2。

          ⑷接收数据状态。Web服务器接收完数据并进行处理完毕之后,向客户端传送返回的结果。此时,XMLHttpRequest对象处于接收数据状态,XMLHttpRequest对象的readyState属性值为3。

          ⑸完成状态。XMLHttpRequest对象接收数据完毕后,进入完成状态,此时XMLHttpRequest对象的readyState属性值为4。此时接收完毕后的数据存入在客户端计算机的内存中,可以使用responseText属性或responseXml属性来获取数据。

           只有在XMLHttpRequest对象完成了以上5个步骤之后,才可以获取从服务器端返回的数据。因此,如果要获得从服务器端返回的数据,就必须要先判断XMLHttpRequest对象的状态。

          XMLHttpRequest对象可以响应readystatechange事件,该事件在XMLHttpRequest对象状态改变时(也就是readyState属性值改变时)激发。因此,可以通过该事件调用一个函数,并在该函数中判断XMLHttpRequest对象的readyState属性值。如果readyState属性值为4则使用responseText属性或responseXml属性来获取数据。

    4、设置获取服务器返回数据的语句

          如果XMLHttpRequest对象的readyState属性值等于4,表示异步调用过程完毕,就可以通过XMLHttpRequest对象的responseText属性或responseXml属性来获取数据。

          但是,异步调用过程完毕,并不代表异步调用成功了,如果要判断异步调用是否成功,还要判断XMLHttpRequest对象的status属性值,只有该属性值为200,才表示异步调用成功,因此,要获取服务器返回数据的语句,还必须要先判断XMLHttpRequest对象的status属性值是否等于200

    5、发送HTTP请求

          在经过以上几个步骤的设置之后,就可以将HTTP请求发送到Web服务器上去了。发送HTTP请求可以使用XMLHttpRequest对象的send()方法,其语法代码如下所示:

          XMLHttpRequest.send(data)

          其中data是个可选参数,如果请求的数据不需要参数,即可以使用null来替代。data参数的格式与在URL中传递参数的格式类似。

    (注意:只有在使用send()方法之后,XMLHttpRequest对象的readyState属性值才会开始改变,也才会激发readystatechange事件,并调用函数)

    6、局部更新

          在通过Ajax的异步调用获得服务器端数据之后,可以使用JavaScript或DOM来将网页中的数据进行局部更新。常用的局部更新的方式有以下3种:

        1,表单对象的数据更新;

        2,IE浏览器中标签间文本的更新;

        3,DOM技术的局部刷新

  • 相关阅读:
    Kubernetes---启动及退出动作
    Kubernetes---容器探针
    Kubernetes---容器的生命周期
    红米3 SudaMod(android_6.01_r72)高配指纹/农历/归属地/SM天气/流畅运行/红外线正常/更新于20161025
    解决:WPS for Linux提示“系统缺失字体symbol、wingdings、wingdings 2、wingdings 3、webding”
    教你一招:Excel中使用MID函数获取身份证中的出生年月日
    解决: Sudamod/CM-13.0 源代码出现 Fatal: duplicate project .....问题
    使用jquery为个人博客园首页公告栏添加用户登录与注销
    使用jquery脚本获取随笔、文章和评论的统计数,自定义显示位置
    使用iquery为博客园(或网站)添加动态显示时间(格式为:年 月 日 时间 星期几)
  • 原文地址:https://www.cnblogs.com/dudadi/p/7944418.html
Copyright © 2020-2023  润新知