ajax的运行原理 详细点的

2025-02-27 09:33:52
推荐回答(1个)
回答1:

AJAX是异步交互,在客户端与服务器只加引入一个媒介,从改变了同步交互过程中“处理--等待--处理--等待”的模式。
浏览器在执行任务时即装载了Ajax引擎。该引擎室js编写的,通常位于页面的框架中,负责转发客户端和服务器之间的交互。另外,
通过js调用AJAX引擎,可以使得页面不在被整体刷新,而仅仅更新用户需要的部分,不但避免了“白屏”现象,还大大节省了带快,加快了
web浏览的速度。 AJAX的组成部分:是由4中技术组成的。
JAVAScript:是通用的脚本语言,用来嵌入在某种应用之中。AJAX应用程序是用JAVASCRIPT编写的。
CSS:CSS为WEB页面元素提供了可视化样式的定义方法。AJAX应用中,用户界面的样式可以通过CSS独立修改。
DOM:通过JS修改DOM,AJAX应用程序可以再运行时改变用户界面,或者局部更新页面中的某个节点
XMLHttpRequest:XMLHttpRequest对象允许Web程序员从WEB服务器以后台的方式获取数据。数据的格式通常是XML,或者是文本
1.创建对象:【基本上是AJAX中创建异步对象的通用方法】
var xmlHttp;//全局变量 (异步对象在整个页面进程中都能用到所以定义为全局变量)
function createXMLHttpRequest(){//创建异步对象的函数
if(window.ActionXObject){
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest){
xmlHttp=new XMLHttpRequest();
}
}
2.利用对象来连接服务器。【建立请求】
1.利用open()方法简历一个请求,并想服务器发送:open(method,URL,asynchronou,user,Password)
asynchronous:是一个布尔值,表示是否为异步请求,默认值为异步请求true;
eg:xmlHttp.open("GET","**.ASPS",true);
2.在请求发送后,要用readyState属性来判断目前请求的情况,如果属性变了,就会触动onreadystatechange事件。
通常的代码:

xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4){//数据接收成功
//do something
}
}
通常情况下,不但需要判断请求的状态,还需要判断服务器返回的相应的状态status 因此上述代码改为:
xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4 && xmlHttp.status==200){//数据接收成功 并切 请求成功
//do something
}
}
3.发送请求:
send(body);
body为要想服务器发送的数据,其格式为查询字符串的形式。eg:var body="myName=lee&age=100";

【注意:】如果在open中指定的是GET方式。则这些参数作为查询字符串提交,如果指定的是post方式,则作为HTTP的POST方法提交。
对于send()方法方法而言,body参数是必需的,如果不发送任何数据,则可以使用xmlHttp.send(null);
【特别的】:如果使用POST方法进行提交请求,那么在发送前必须使用如下的语句来设置HTTP的头,语法如下:
xmlHttp.setRequestHeader("Content-Type";"application/x-www-form-urlencoded");
可以对返回值做如下处理:
alert("服务器返回:"+xmlHttp.responseText);

IE浏览器会自动缓存异步通信的结果,解决的办法是每次url的地址不相同。Firefox不存在这个问题。
eg:
var sUrl=new Date().getTime();//地址不断变化
xmlHttp.open("GET",sUrl,true);