ajax基础使用知识

AJAX = “Asynchronous Javascript and XML”

优点:ajax异步和服务器进行数据交换并处理数据,然后更新页面的局部数据,不用整体刷新

1,不用整体刷新减轻客户端内存使用
2,不用刷新,用户操作连贯
3,ajax处理更新数据,减轻服务器负担
4,标准化开发

XMLHttpRequest用于和服务器交换数据

1,创建XMLHttpRequest 对象:

var=new XMLHttpRequest();//IE5和IE6:var=new ActiveXObject("Microsoft.XMLHTTP");

兼容IE5和IE6的写法:

var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}

2,向服务器发送请求

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

a,open(method,url,async)规定请求的类型、URL 以及是否异步处理请求。

method:请求的类型;GET 或 POST
url:文件在服务器上的位置
async:true(异步)或 false(同步)

例如:xmlhttp.open("GET","/example/xmle/books.xml",true);

b,send(string)将请求发送到服务器。

string:仅用于 POST 请求

例如:xmlhttp.send();

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

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

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


3,服务器响应:使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性

responseText:获得字符串形式的响应数据。
responseXML:获得XML形式的响应数据。

若是来自服务器的响应不是xml,则使用responseText:

例如(js用法):document.getElementById("myDiv").innerHTML=xmlhttp.responseText;//将服务器的响应内容转成字符串插入“myDiv”

若是来自服务器的响应是 XML,而且需要作为 XML 对象进行解析,请使用 responseXML 属性:

<html>
<head>
<script type="text/javascript">
function loadXMLDoc()
{
var xmlhttp;
var txt,x,i;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)//status == 200是已找到数据,readyState==4是请求已完成,且响应已就绪。
{
xmlDoc=xmlhttp.responseXML;
txt="";
x=xmlDoc.getElementsByTagName("title");
for (i=0;i<x.length;i++)
{
txt=txt + x[i].childNodes[0].nodeValue + "<br />";
//x是一个元素数组,存储xml中的全部title元素,childNodes获取title元素中的第一个文本节点,并且文本节点的nodeValue是文本节点本身
}
document.getElementById("myDiv").innerHTML=txt;
}
}
xmlhttp.open("GET","/example/xmle/books.xml",true);
xmlhttp.send();
}
</script>
</head>
<body>
<h2>My Book Collection:</h2>
<div id="myDiv"></div>
<button type="button" onclick="loadXMLDoc()">获得我的图书收藏列表</button>
</body>
</html>


4,onreadystatechange 事件:每当 readyState 改变时,就会触发 onreadystatechange 事件

a,onreadystatechange:每当 readyState 属性改变时,就会调用该函数。
b,readyState:存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。

0: 请求未初始化
1: 服务器连接已建立
2: 请求已接收
3: 请求处理中
4: 请求已完成,且响应已就绪
c,status

200: "OK"
404: 未找到页面

5,使用 Callback 函数:回调函数

如果您的网站上存在多个 AJAX 任务,那么您应该为创建 XMLHttpRequest 对象编写一个标准的函数,并为每个 AJAX 任务调用该函数。
该函数调用应该包含 URL 以及发生 onreadystatechange 事件时执行的任务(每次调用可能不尽相同)。

猜你喜欢

转载自www.cnblogs.com/yu-tang/p/12073819.html
今日推荐