ajax----局部刷新

  最近在编网页的时候想实现在不跳转的情况下刷新当前页面。也就是客户端发送一个查询请求,在客户端不跳转当前页面的情况下,显示服务器返回的结果。

在网上找了下资料,发现ajax能做到这一点。

一、关于ajax

①    ajax(asynchronouse javascript and xml) 异步的javascript 和 xml
②    是7种技术的综合,它包含了七个技术( javascript、 xml、xstl 、xhtml、 dom、 xmlhttprequest、 css),  ajax  是一个粘合剂,
③    ajax是一个与服务端语言无关的技术. 即可以使用在(php/java ee/.net网站/ asp)
④    ajax可以给客户端返回三种格式数据(文本格式 ,xml , json格式)
⑤    无刷新数据交换技术有以下: flash, java applet, 框架, iframe,  ajax)

 

 二、ajax在什么地方用的多
1   动态加载数据,按需取得数据。【树形菜单、联动菜单…/省市联动】
2   改善用户体验。【输入内容前提示、带进度条文件上传…】
3   电子商务应用。【购物车、邮件订阅…】
4   访问第三方服务。    【访问搜索服务、rss阅读器】
5.   数据的布局刷新


三、使用ajax与服务器通信的的步骤
①    创建一个XMLHttpRequest对象
②    创建url,data,通过 xmlHttpRequest.send()
③    服务器端接收 ajax的请求,做相应处理(操作数据库),然后返回结果(echo 语句)
④    客户端通过xmlHttpRequest的属性 reponseText , responseXML 取的数据,然后就完成局部刷新当前页面任务

 四、创建 XMLHttpRequest对象

  所有现代浏览器(IE7+、火狐、谷歌、Safari以及Opera)均内建XMLHttpRequest对象。

(1)创建XMLHttpRequest对象的语法:

variable = new XMLHttpRequest();

 老版本的IE(IE5、IE6)使用ActiveX对象

variable=new ActiveXObject("Microsoft.XMLHTTP");

  为了应对所有浏览器,在新建XMLHttpRequest对象的时候要判断浏览器类型,如果支持XMLHttpRequest对象,则

创建;如果不支持,则创建ActiveXObject对象(针对IE5、IE6).创建方法如下:

var xmlhttp;

if(window.XMLHttpRequest)

{  //非IE5、IE6

 xmlhttp = new XMLHttpRequest();

}

else

{  //IE5、ie6

 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

}

(2)向服务器发送请求

如果需要将请求发送到服务器,我们使用XMLHttpRequest对象的open()和send()方法:

xmlhttp.open("GET","test1.txt",true);

xmlhttp.send();

方法 描述
open(method,url,async)

规定请求的类型、URL以及是否异步处理请求。

method:请求类型;GET、POST

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

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

send(string)

将请求发送到服务器

string:仅用于POST请求

 

 

 

 

 

 

 

 

 

(3)GET、POST的比较

与POST相比,GET更简单也更快,并且在大部分情况下都能用。

然而,在以下情况中,需使用POST请求:

  • 无法使用缓存文件(更新服务器上的文件或数据库)
  • 向服务器发送大量数据(POST没有数据量限制)
  • 发送包含未知字符的用户输入时,POST比GET更稳定也更可靠

(4)服务器响应

  如果需要获得来自服务器的响应,可以使用XMLHttpRequest对象的responseText或responseXML属性

属性 描述 用法
responseText

如果来自服务器的响应并非XML,就使用responseText。

responseText属性返回字符串形成的响应

document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
responseXML 如果来自服务器的响应式XML,而且需要作为XML对象进行解析,可以使用responseXML属性 xmlDoc=xmlhttp.responseXML;
txt="";
x=xmlDoc.getElementsByTagName("ARTIST");
for (i=0;i<x.length;i++)
  {
  txt=txt + x[i].childNodes[0].nodeValue + "<br />";
  }
document.getElementById("myDiv").innerHTML=txt;

 

 

 

 

 

 

(5)onreadystatechange事件

  当请求被发送到服务器时,我需要执行一些基于响应的任务。每当readyState改变时,就会触发onreadystatechange事件。

readyState属性存有XMLHttpRequest的状态信息。

  XMLHttpRequest对象的三个重要的属性:

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

存有XMLHttpRequest的状态。从0到4发生变化。

0:请求未初始化

1:服务器连接已建立

2:请求已接收

3:请求处理中

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

status

200:“OK”

400:未找到页面

 

 

 

 

 

 

 

 

 

 

 

在onreadystatechange事件中,我们规定服务器响应以做好被处理的准备时所执行的任务。

posted @ 2013-05-28 22:26  十日十月  阅读(310)  评论(0编辑  收藏  举报