Ajax

Ajax基础
最详细的ajax资料
1. 创建对象实例并初始化对象


function createXMLHttpRequest() {
	var xmlhttp;
	if (window.XMLHttpRequest) {
		//  IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
		xmlhttp = new XMLHttpRequest(); //支持所有现代浏览器
	} else {
	// IE6, IE5 浏览器执行代码
	xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); //支持老版本的浏览器
	}
}

创建完XMLHttpRequest对象实例后,必须调用open()方法来初始化该对象。如
为了避免缓存,主要用下面那种方法

Var xmlHttpObject = createXMLHttpRequest();
xmlHttpObject.open("get","info.txt",true);
//在上面的例子中,您可能得到的是缓存的结果。
//为了避免这种情况,请向 URL 添加一个唯一的 ID:
xmlhttp.open("GET","/jquery/demo_test_get.php?t=" + Math.random(),true);
//如果您希望通过 GET 方法发送信息,请向 URL 添加信息,传进name=Henry&city=Ford的数据
xmlhttp.open("GET","/jquery/demo_test_get.php?name=Henry&city=Ford",true);

open()方法的3个参数:
◆request type:说明所发送的请求类型的字符串——通常是GET或POST。
◆URL:说明发送请求的目标URL的字符串。
◆async:布尔值,用来说明请求是否为异步模式。

2. 指定响应处理函数

var xmlHttpObject = createXMLHttpRequest();
xmlHttpObject.onreadystatechange = handleStateChange;
var xmlHttpObject = createXMLHttpRequest();
xmlHttpObject.onreadystatechange = function(){
	if(xmlHttpObject.readyState == 4){
		alert("Got response.");
	}
};

这里readyState共有5种可能的取值:
0(uninitialized,未初始化):对象已经创建但还没有调用open()方法。
1(loading,载入中):open()方法已经调用但请求还没有发送。
2(loaded,已载入):请求已经发送。
3(interactive,交互中):已经接收到部分响应。
4(complete,完成):所有数据都已经收到,连接已经关闭。
在大部分情况下,当返回请求时只需检查值是否为4即可。

3. 发出HTTP请求
在指定响应处理函数之后,接下就是发送HTTP请求了。发送请求只需调用send()方法,该方法将完成请求的发送。

var xmlHttpObject = createXMLHttpRequest();
xmlHttpObject.onreadystatechange = function(){
	if(xmlHttpObject.readyState == 4){
		alert("Got response.");
	}
};
xmlHttpObject.send(null);

4. 处理服务器返回的信息

if(xmlHttp.readyState == 4) {
	if(xmlHttp.status == 200) {//相应正确==200
		alert("The server replied with: " + xmlHttp.responseText);
	}else{
		alert("An error occurred: " + xmlHttp.statusText);
	}
} 

完整例子

<script type="text/javascript">
	//第一步,创建创建对象实例并初始化对象
	var xmlHttpObject;
	function createXMLHttpRequest() {
		if (window.ActiveXObject) {
			xmlHttpObject = new ActiveXObject("Microsoft.XMLHTTP"); //支持老版本的浏览器
		} else if (window.XMLHttpRequest) {
			xmlHttpObject = new XMLHttpRequest(); //支持所有现代浏览器
		}
	}
	//2. 指定响应处理函数
	function startRequest() {
		createXMLHttpRequest();
		xmlHttpObject.onreadystatechange = handleStateChange;

		//在上面的例子中,您可能得到的是缓存的结果。
		//为了避免这种情况,请向 URL 添加一个唯一的 ID:
		xmlHttpObject.open("GET", "http://127.0.0.1:5500/a/inner.html?t=" + Math.random(), true);
		//xmlHttpObject.open("GET", "http://127.0.0.1:5500/a/aa.html", true); 
		//必须调用open()方法来初始化该对象
		//发送请求的域名要相同
		xmlHttpObject.send(null); //3. 发出HTTP请求
	}

	function handleStateChange() {
		if (xmlHttpObject.readyState == 4) {
			if (xmlHttpObject.status == 200) {//在这里200表示页面正常
				alert("服务器响应为:" + xmlHttpObject.responseText);
				//responseText:返回一个包含响应主体的字体串。
				//responseXML:返回一个XML文档对象,它仅当返回的内容类型为text/xml时才使用,并可以得用DOM来处理。
			} else {
				alert("An error occurred: " + xmlHttpObject.statusText);
				//服务器返回信息后判断HTTP状态码,status属性中包含了响应中的HTTP状态码,statusText则包含对该状态的文字描述
			}
		}
	}
</script>

Json文件的获取

alert("服务器响应为:" + xmlHttpObject.responseText);
//xmlHttpObject.responseText是得到里面的数据
//var aa = xmlHttpObject.responseText;
var obj = JSON.parse(xmlHttpObject.responseText); //将JSON字符串解析为原生的JS对象
//这样json的数据就已经添加到obj里面了。
var name = obj.name;
var sex = obj.sex;
var age = obj.age;
document.getElementById("aaa").innerHTML = "姓名" + name + "" + "" + sex + "" + age;
//responseText:返回一个包含响应主体的字体串。
//responseXML:返回一个XML文档对象,它仅当返回的内容类型为text/xml时才使用,并可以得用DOM来处理。

在这里插入图片描述
Ajax 异步编程
Ajax 封装

问题:发送一次请求代码过多,发送多次请求代码冗余且重复。
解决方案:将请求代码封装到函数中,发请求时调用函数即可。

ajax({ 
     type: 'get',
     url: 'http://www.example.com',
     success: function (data) { 
         console.log(data);
     }
 })
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值