juntity
2016-07-15 17:07:38
js通过Ajax异步操作后端xml数据的基本原理讲解
/*
* Ajax的核心操作对象是xmlHttpRequest
* 简化操作步骤:实例化一个xmlHttpRequest对象 ==> 发送请求 ==> 接受响应 ==> 执行回调
*/
实例化对象
考虑到兼容问题,非IE5/IE6 使用 => new XMLHttpRequest();
IE5/IE6使用 => new ActiveXObject(Microsoft.XMLHTTP); ☯神呐,请带走IE吧!
发送请求
使用 XMLHttpRequest 对象的 open('GET',url,async) 和 send() 方法:
❶ open() 有三个参数:
分别为http请求方式(get/post) ==》与 POST 相比,GET 更简单也更快,POST 没有数据量限制,不会缓存,相对安全
http请求地址 ==》url(统一资源定位符)文件所在服务器的地址
async:true(异步)或 false(同步)
❷send(string) string:仅用于 POST 请求
接受响应,执行回调
当readyState的值发生改变时,触发readystatechange事件,事件中就可以为所欲为了
readyState==4 =>请求加载完成 / http的状态为200 =>响应成功
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>异步操作集合啦</title>
<script type="text/javascript">
/*
* Ajax的核心操作对象是xmlHttpRequest
* 简化操作步骤:实例化一个xmlHttpRequest对象 ==> 发送请求 ==> 接受响应 ==> 执行回调
*/
var jsAjax = function() {
var xmlHttpR = null;
if(window.ActiveXObject) {
//IE5/IE6把xmlHttpRequest封装在window的子对象ActiveXObject中
xmlHttpR = new ActiveXObject(Microsoft.XMLHTTP);
} else if(window.XMLHttpRequest) {
//非IE5、IE6
xmlHttpR = new XMLHttpRequest();
}
if(xmlHttpR) {
xmlHttpR.open("GET", "ajax.xml", true);
xmlHttpR.onreadystatechange = function(e) {
if(xmlHttpR.readyState == 4) {
if(xmlHttpR.status == 200) {
console.log(xmlHttpR.responseText);
}
}
}
xmlHttpR.send(null);
}
}
</script>
</head>
<body>
</body>
</html>
<?xml version="1.0" encoding="utf-8"?>
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
评论
最近浏览
zdm128136 LV8
2017年11月24日
weienqing LV17
2017年11月15日
nsq0006 LV6
2017年11月7日
Lorraine_Luo
2017年3月25日
暂无贡献等级
tiger2011 LV5
2016年11月27日
daqinhuangchao LV9
2016年11月2日
hongym1992 LV2
2016年10月28日
元明清 LV2
2016年10月24日
网海情缘 LV11
2016年10月7日
fugetsu LV5
2016年9月30日


