Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。要清楚这个过程和原理,我们必须对 XMLHttpRequest有所了解。
XMLHttpRequest是ajax的核心机制,它是在IE5中首先引入的,是一种支持异步请求的技术。简单的说,也就是javascript可以及时向服务器提出请求和处理响应,而不阻塞用户。达到无刷新的效果。
所以我们先从XMLHttpRequest讲起,来看看它的工作原理。
首先,我们先来看看XMLHttpRequest这个对象的属性。
它的属性有:
onreadystatechange 每次状态改变所触发事件的事件处理程序。
responseText 从服务器进程返回数据的字符串形式。
responseXML 从服务器进程返回的DOM兼容的文档数据对象。
status 从服务器返回的数字代码,比如常见的404(未找到)和200(已就绪)
status Text 伴随状态码的字符串信息
readyState 对象状态值
0 (未初始化) 对象已建立,但是尚未初始化(尚未调用open方法)
1 (初始化) 对象已建立,尚未调用send方法
2 (发送数据) send方法已调用,但是当前的状态及http头未知
3 (数据传送中) 已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误,
4 (完成) 数据接收完毕,此时可以通过通过responseXml和responseText获取完整的回应数据
但是,由于各浏览器之间存在差异,所以创建一个XMLHttpRequest对象可能需要不同的方法。这个差异主要体现在IE和其它浏览器之间。下面是一个比较标准的创建XMLHttpRequest对象的方法。
function CreateXmlHttp()
{
//非IE浏览器创建XmlHttpRequest对象
if(window.XmlHttpRequest)
{
xmlhttp=new XmlHttpRequest();
}
//IE浏览器创建XmlHttpRequest对象
if(window.ActiveXObject)
{
try
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
try{
xmlhttp=new ActiveXObject("msxml2.XMLHTTP");
}
catch(ex){}
}
}
}
function Ustbwuyi()
{
var data=document.getElementById("username").value;
CreateXmlHttp();
if(!xmlhttp)
{
alert("创建xmlhttp对象异常!");
return false;
}
xmlhttp.open("POST",url,false);
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4)
{
document.getElementById("user1").innerHTML="数据正在加载...";
if(xmlhttp.status==200)
{
document.write(xmlhttp.responseText);
}
}
}
xmlhttp.send();
}
如上所示,函数首先检查XMLHttpRequest的整体状态并且保证它已经完成(readyStatus=4),即数据已经发送完毕。然后根据服务器的设定询问请求状态,如果一切已经就绪(status=200),那么就执行下面需要的操作。
对于XmlHttpRequest的两个方法,open和send,其中open方法指定了:
a、向服务器提交数据的类型,即post还是get。
b、请求的url地址和传递的参数。
c、传输方式,false为同步,true为异步。默认为true。如果是异步通信方式(true),客户机就不等待服务器的响应;如果是同步方式(false),客户机就要等到服务器返回消息后才去执行其他操作。我们需要根据实际需要来指定同步方式,在某些页面中,可能会发出多个请求,甚至是有组织有计划有队形大规模的高强度的request,而后一个是会覆盖前一个的,这个时候当然要指定同步方式。
Send方法用来发送请求。
知道了XMLHttpRequest的工作流程,我们可以看出,XMLHttpRequest是完全用来向服务器发出一个请求的,它的作用也局限于此,但它的作用是整个ajax实现的关键,因为ajax无非是两个过程,发出请求和响应请求。并且它完全是一种客户端的技术。而XMLHttpRequest正是处理了服务器端和客户端通信的问题所以才会如此的重要。
现在,我们对ajax的原理大概可以有一个了解了。我们可以把服务器端看成一个数据接口,它返回的是一个纯文本流,当然,这个文本流可以是XML格式,可以是Html,可以是Javascript代码,也可以只是一个字符串。这时候,XMLHttpRequest向服务器端请求这个页面,服务器端将文本的结果写入页面,这和普通的web开发流程是一样的,不同的是,客户端在异步获取这个结果后,不是直接显示在页面,而是先由javascript来处理,然后再显示在页面。至于现在流行的很多ajax控件,比如magicajax等,可以返回DataSet等其它数据类型,只是将这个过程封装了的结果,本质上他们并没有什么太大的区别。
分享到:
- 2008-05-26 10:28
- 浏览 1371
- 评论(0)
- 论坛回复 / 浏览 (0 / 2352)
- 查看更多
相关推荐
Ajax(Asynchronous JavaScript and XML,异步JavaScript和XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。...理解和掌握Ajax的工作原理以及XMLHttpRequest的使用是现代Web开发者必备的技能之一。
### AJAX的基本原理及其实现 #### 一、引言 AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的...对于开发者来说,掌握 AJAX 的基本原理和实现方法是非常重要的。
### Ajax基本运行原理详解 #### 引言 随着互联网技术的不断发展,用户对于网页应用程序的交互性和用户体验的要求越来越高。传统的浏览器/服务器(B/S)架构虽然解决了早期客户端/服务器(C/S)架构中存在的部署和...
Ajax(Asynchronous JavaScript and XML,异步JavaScript和XML)是一种用于创建交互式网页应用的技术。它不是一种新的编程语言,而是一种使用现有标准的新方法,能够让Web应用程序更加高效、交互性更强。 - **发明...
### AJAX原理及用法 #### 一、什么是Ajax技术? Ajax(Asynchronous JavaScript and XML,异步JavaScript与XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。通过在后台与服务器进行少量数据...
XMLHttpRequest(简称XHR)是Web开发中的一个关键技术,它允许JavaScript在不刷新整个页面的情况下与服务器进行异步数据交换,这种技术被称为Ajax(Asynchronous JavaScript and XML),虽然名字中有XML,但实际传输...
### AJAX技术原理与使用方法详解 #### 一、引言 AJAX(Asynchronous JavaScript and XML),即异步JavaScript和XML技术,是一种用于创建快速动态网页的技术。它并不是一种单一的技术,而是多种技术的组合使用,包括...
### AJAX详解及原理 #### 一、引言 在探讨AJAX(Asynchronous JavaScript and XML)之前,我们先来理解一下这个技术的概念及其重要性。AJAX是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。通过在...
通过本篇文章的学习,我们可以了解到AJAX的基本概念、工作原理以及如何使用XMLHttpRequest对象发起GET和POST请求。掌握了这些基础知识后,可以进一步探索如何利用AJAX创建更高效、更友好的Web应用程序。
**Ajax基本原理** Ajax,全称为Asynchronous JavaScript + XML,是一种在无需刷新整个网页的情况下,能够更新部分网页内容的技术。最初由Jesse James Garrett提出,它并非一项全新的技术,而是结合了JavaScript、...
首先,XMLHTTP组件是Windows操作系统内置的MSXML库的一部分,它提供了与HTTP服务器通信的能力,可以发送HTTP请求并接收响应,常用于AJAX(Asynchronous JavaScript and XML)技术中。在Delphi中,可以通过创建...
Ajax 技术是一种在不刷新整个网页的情况下,能够更新部分网页内容的技术,它结合了多种技术,包括异步 JavaScript 和 XML(以及 DHTML),由 Adaptive Path 的 Jesse James Garrett 首次提出。Ajax 的核心是利用 ...
### Ajax实现原理详解 #### 一、Ajax简介 Ajax(Asynchronous JavaScript and XML)是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新,这意味着可以在不重新...
让更多人了解ajax技术.function _open(requestUrl) { var xmlHttp = false; var versions = ['Microsoft.XMLHTTP', 'MSXML.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.7.0', 'Msxml2.XMLHTTP.6.0', 'Msxml2....
### AJAX原理详解 ...掌握AJAX的基本原理和技术细节对于Web开发者来说至关重要。随着技术的发展,虽然XMLHttpRequest已经被Fetch API等更现代化的API所取代,但AJAX的概念依然适用于各种异步数据交互场景中。
### AJAX原理与XMLHttpRequest详解 #### 一、引言 AJAX(Asynchronous JavaScript and XML,异步JavaScript和XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。其核心在于使用`XMLHttpRequest`...
在这个特定的场景中,我们讨论的是如何使用Ajax实现二级下拉框的联动,以及涉及到的技术如Servlet、Java和XMLHttp。 首先,二级下拉框联动通常用于地理信息的选择,例如省份选择后,城市下拉框自动更新对应省份的...
### AJAX详解:异步JavaScript与XML的精妙融合 AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个...掌握AJAX的基本原理和技术,对于任何希望构建现代化、高性能Web应用的开发者来说都是必不可少的。
Ajax的目标就是弥合桌面应用程序和Web应用程序之间的差距,提供类似桌面应用的即时响应和动态交互。它利用DHTML(Dynamic HTML)和DOM(Document Object Model)来更新页面内容,而不是重新加载整个页面。DHTML允许...
1. **原理**:AJAX的核心是XMLHttpRequest对象,它可以在后台与服务器通信,而不会打断用户的操作。通过创建XMLHttpRequest对象,设置请求方法、URL以及是否异步处理,然后发送请求,最后处理服务器返回的响应。 2....