Ajax基本概念和原理 您所在的位置:网站首页 ajax和php Ajax基本概念和原理

Ajax基本概念和原理

#Ajax基本概念和原理| 来源: 网络整理| 查看: 265

什么是Ajax

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

Ajax的全称是Asynchronous JavaScript and XML,即异步JavaScript+XML。它并不是新的编程语言,而是几种原有技术的结合体。它由以下几种技术组合而成,包括:

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

实际上,在Ajax解决方案中这些技术都是可用的,不过只有三种是必须的:HTML/XHTML、DOM以及JavaScript。

XMLHttpRequest对象

当需要异步与服务器交换数据时,需要XMLHttpRequest对象来异步交换。XMLHttpRequest对象的主要属性有:

onreadystatechange——每次状态改变所触发事件的事件处理程序。 responseText——从服务器进程返回数据的字符串形式。 responseXML——从服务器进程返回的DOM兼容的文档数据对象。 status——从服务器返回的数字代码,如404(未找到)和200(已就绪)。 status Text——伴随状态码的字符串信息。 readyState——对象状态值。对象状态值有以下几个: 0 - (未初始化)还没有调用send()方法 1 - (载入)已调用send()方法,正在发送请求 2 - (载入完成)send()方法执行完成 3 - (交互)正在解析响应内容 4 - (完成)响应内容解析完成,可以在客户端调用了

对于readyState的状态值,其中“0”状态是在定义后自动具有的状态值,而对于成功访问的状态(得到信息)我们大多数采用“4”进行判断。

Ajax的核心就是是JavaScript对象XmlHttpRequest,这个对象为向服务器发送请求和解析服务器响应提供了流畅的接口。XmlHttpRequest可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。

XHR对象由IE5率先引入,在IE5中XHR对象是通过MSXML库中一个ActiveX对象实现的,根据IE版本不同可能会遇到不同版本XHR对象,而IE7+与其它现代浏览器均支持原生的XHR对象,在这些浏览器中我们只需使用XMLHttpRequest构造函数就可以构造XHR对象,因此一个浏览器兼容的创建XHR对象的函数写法大概是这个样子:

1 var xmlhttp; 2 if (window.XMLHttpRequest) { 3 // code for IE7+, Firefox, Chrome, Opera, Safari 4 xmlhttp=new XMLHttpRequest(); 5 } else { 6 // code for IE6, IE5 7 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 8 } XMLHttpRequest对象用法

XMLHttpRequest对象有两个重要方法 open与send。

1 xmlhttp.open("GET","ajax_info.txt",true); 2 xmlhttp.send();

对于open方法,有几点需要注意:

URL是相对于当前页面的路径,也可以似乎用绝对路径。 open方法不会向服务器发送真正请求,它相当于初始化请求并准备发送。 只能向同一个域中使用相同协议和端口的URL发送请求,否则会因为安全原因报错。

真正能够向服务器发送请求需要调用send方法,并仅在POST请求可以传入参数,不需要则发送null,在调用send方法之后请求被发往服务器。  

请求发往服务器,服务器根据请求生成响应(Response),传回给XHR对象,在收到响应后相应数据会填充到XHR对象的属性,有四个相关属性会被填充:

responseText——从服务器进程返回数据的字符串形式。 responseXML——从服务器进程返回的DOM兼容的文档数据对象。 status——从服务器返回的数字代码,如404(未找到)和200(已就绪)。 status Text——伴随状态码的字符串信息。

在收到响应后第一步是检查响应状态,确保响应是否成功返回(状态为200)。

1 xhr.open('get','default.aspx,false'); //准备同步请求 2 xhr.send(); 3 if(xhr.status>=200 && xhr.status


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有