• 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html
  • 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html

浅谈ajax

技术杂谈 勤劳的小蚂蚁 4个月前 (01-05) 79次浏览 已收录 0个评论 扫描二维码

ajax介绍
       ajax即“Asynchronous Javascript And XML”(异步JavaScriptXML),是指一种创建交互式网页应用的网页开发技术,它并不是一门新的语言。
       通过在后台与服务器进行少量数据交换,ajax可以使网页实现异步更新。       
       这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。而传统的网页如果需要更新内容,必需重载整个网页面。
ajax技术体系
         XHTMLCSS
   使用文档对象模型(Document Object Model)作动态显示和交互
   使用XMLXSLT做数据交互和操作
   使用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:文件在服务器上的位置
        asynctrue(异步)或 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对象,而在NetscapeFirefox浏览器中则直接使用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的请求方法,一共有getpostheadputdelete五种方法,常用的方法为getpost
      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的异步调用获得服务器端数据之后,可以使用JavaScriptDOM来将网页中的数据进行局部更新。常用的局部更新的方式有以下3种:
    1,表单对象的数据更新;
    2,IE浏览器中标签间文本的更新;
    3,DOM技术的局部刷新


丨极客文库, 版权所有丨如未注明 , 均为原创丨
本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
转载请注明原文链接:浅谈ajax
喜欢 (0)
[247507792@qq.com]
分享 (0)
勤劳的小蚂蚁
关于作者:
温馨提示:本文来源于网络,转载文章皆标明了出处,如果您发现侵权文章,请及时向站长反馈删除。

您必须 登录 才能发表评论!

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ


QQ:2248886839


工作时间:09:00-23:00