javascript ajax(二)

本文介绍了如何使用AJAX技术进行GET和POST请求,并演示了如何加载JSON数据。通过实例展示了不同请求方式的应用场景及如何处理响应头信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

function createXHR(){
	
	if(typeof XMLHttpRequest != "undefined"){
		return new XMLHttpRequest();
	}else if(typeof ActiveXObject != "undefined"){
		var version = [
			"MSXML2.XMLHttp.6.0",
			"MSXML2.XMLHttp.3.0",
			"MSXML2.XMLHttp"
		];
		
		
		for(var i = 0;i < version.length;i++){
			try{
				return new ActiveXObject(version[i]);
			}catch(e){
				
				
			}
			
		}
	}
	else{
		throw new Error("您的系统或浏览器不支持XHR对象");
	}
}

//在Web程序上,GET一般是URL提交请求,比如:demo.php?name = Lee &  age = 100
//POST一般是Web表单提交,比如<form method = "post"><input type = "text" name = "age" value = "100"></input></from>

//两种头信息:响应头信息-->服务器返回的信息,客户端可以获取,但不可设置
//          请求头信息-->客户端发送的信息,客户端可以设置,但不可以获取


/*
//头信息
addEvent(document,"click",function(){
	
	var xhr = createXHR();
	
	xhr.onreadystatechange = function(){
		
		if(xhr.readyState == 4){
			
			if(xhr.status == 200){
				//alert(xhr.getAllResponseHeaders());             //获取全部响应头信息
				//alert(xhr.getResponseHeader("Content-type"));   //获取单个响应头信息
			}else{
				alert("获取数据错误!错误代号:"+xhr.status+",错误信息:"+xhr.statusText);
			}
		}
	};
	
	xhr.open("get","demo.jsp?rand = "+Math.random(),true);
	xhr.setRequestHeader("myheader","Lee");     //设置请求头信息,一般没什么用,在POST提交请求有用
	xhr.send(null);
	
	
});
*/




/*
//使用异步方式
addEvent(document,"click",function(){
	
	var xhr = createXHR();
	xhr.onreadystatechange = function(){
		if(xhr.readyState == 4){
			if(xhr.status == 200){	
				alert(xhr.responseText);
			}else{
				alert("获取数据错误!错误代号:"+xhr.status+",错误信息:"+xhr.statusTest);
			}
		}
	};
	xhr.open("get","demo.jsp?rand = "+Math.random(),true);
	
	xhr.send(null);
	xhr.abort();          //取消异步请求
});
*/

/*
//GET 请求
addEvent(document,"click",function(){
	var xhr = createXHR();
	var url = "demo.jsp?rand=" + Math.random();
	url = params(url,"name","Lee");
	url = params(url,"age",100);
	
	alert(url);
	
	
	xhr.onreadystatechange = function(){
		if(xhr.readyState == 4){
			if(xhr.status == 200){
				alert(xhr.responseText);
			}else{
				alert("获取数据错误!错误代号:" + xhr.status + ",错误信息:" + xhr.statusText);
			}
		}
	};
	xhr.open("get",url,true);
	xhr.send(null);
	
});


function params(url,name,value){
	url += url.indexOf("?") == -1 ? "?":"&";
	url += encodeURIComponent(name) + "=" +encodeURIComponent(value);
	return url;
}

//中文乱码问题,AJAX返回的数据其实是UTF-8,最简单的解决方案是全部都是UTF-8
//特殊字符,

*/
/*
addEvent(document,"click",function(){
	var xhr = createXHR();
	var url = "demo.jsp?rand="+Math.random();
	
	
	xhr.onreadystatechange = function(){
		if (xhr.readyState == 4) {
			if (xhr.status == 200) {
				alert(xhr.responseText);
			}
			else {
				alert("获取数据错误!错误代号:" + xhr.status + ",错误信息" + xhr.statusText);
			}
		}
	};
	xhr.open("post",url,true);      //第一步改为post
	
	//第三部,模拟表单提交
	xhr.setRequestHeader("Content-Type","application/x-www.form-urlencoded");
	
	xhr.send("name=Lee&age=100");   //第二步将名值对放入send方法里
	
	
	
});
*/

//JSON加载
addEvent(document,"click",function(){
	var xhr = createXHR();
	var url = "demo.json?rand="+Math.random();
	
	
	xhr.onreadystatechange = function(){
		if(xhr.readyState == 4){
			if(xhr.status == 200){
				var box = JSON.parse(xhr.responseText);
				alert(box);
			}else{
				alert("获取数据错误!错误代号:"+xhr.status+",错误信息:"+xhr.statusText);
			}
		}
		
	};
	xhr.open("get",url,true);
	xhr.send(null);
	
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值