自己封装Ajax-lib小工具

ajaxutils.js

//创建XMLHttpRequest对象
function createXMLHttpRequest() {
			try {
				return new XMLHttpRequest();//大多数浏览器都支持
			} catch (e) {
				try {
					return new ActiveXObject("Msxml2.XMLHTTP");//IE6.0支持
				} catch (e) {
					try {
						return new ActiveXObject("Microsoft.XMLHTTP");//IE5.5以及更早的版本支持
					} catch (e) {
						alert("大哥,你到底用的什么浏览器!");
						throw e;
					}
				}
			}
		}
/*
 * var option ={
 * 	method   请求方式,不传值,默认为GET
 * 	url      请求的url,必须给
 * 	asyn     是否是异步请求,默认为true
 * 	params   请求体,不传默认为GET请求的null
 * 	callback  回调方法,返回服务器响应的数据data
 * 	type      服务器响应的数据转换为什么类型:text,xml,json
 * 
 * };
 * */
function ajax(option) {
	//创建XMLHtppRequest对象
	var xmlHttp = createXMLHttpRequest();
	if(!option.method) {//如果不传POST,默认为GET
		option.method="GET";
	}
	if(option.asyn==undefined) {//如果不传false,默认为true,即异步请求
		option.asyn=true;
	}
	//打开与服务器的连接
	xmlHttp.open(option.method, option.url, option.asyn);
	if(option.method=="POST") {//如果为POST请求,要添加响应头
		xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	}
	//发送请求
	xmlHttp.send(option.params);
	//注册状态改变监听
	xmlHttp.onreadystatechange = function() {
		if(xmlHttp.readyState==4 && xmlHttp.status==200) {//双重判断
			var data;
			if(!option.type) {//如果不指定获取的格式,就默认为Text
				data = xmlHttp.responseText;
			} else if(option.type == "text") {
				data = xmlHttp.responseText;
			}else if(option.type == "xml") {
				data = xmlHttp.responseXML;
			} else if(option.type == "json") {
				var text = xmlHttp.responseText;
				//如果需要json类型的数据,需要解析这个json串为JavaScript对象
				data = eval("(" + text + ")");
				console.log(data.name);
			}
			//调用回调函数,进行数据返回
			option.callback(data);
		}	
	}
}

AServlet.java

public class AServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String person = "{\"name\":\"zhangShan\",\"age\":18,\"sex\":\"male\"}";
		System.out.println(person);
		response.getWriter().print(person);
		
	}

}

json.jsp中的核心代码

<script type="text/javascript" src="<c:url value='/ajax-lib/ajaxutils.js'/>"></script>
	<script type="text/javascript">
	window.onload = function() {
		var btn = document.getElementById("btn");
		btn.onclick = function() {
			ajax(
				{
					url:"<c:url value='/AServlet'/>",
					type:"json",
					callback:function(data) {
						
						document.getElementById("h3").innerHTML=data.name+ "," + data.age + "," + data.sex;
						//console.log(data.name);
					}
				}	
			);
		};
	}	
	</script>
  </head>
  <body>
    <h1>测试自己封装的ajax-lib小工具</h1>
    <button id="btn">点击这里</button>
    <h3 id="h3"></h3>
  </body>

测试结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值