Ajax中自定义发送请求和处理响应对象

本文详细介绍了使用JavaScript中的XMLHttpRequest对象进行Ajax请求的基本原理、关键属性和方法,包括如何自定义发送请求和处理响应对象。通过实例展示了如何实现GET和POST请求,并介绍了自定义AjaxRequest对象来简化请求过程。

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

Ajax中自定义发送请求和处理响应对象

JavaScript内置一个称为XMLHttpRequest的对象,用于发起Ajax请求并处理Ajax响应。这个对象非常复杂,包含许多支持Ajax的特性和方法。
readyState:请求的状态代码【0(未开始)、1(开启)、2(已传送)、3(接收中)、4(已载入)】
status:HTTP的请求状态代码【404(找不到文件)、200(OK)】
onreadystatechange:请求状态改变时会被调用的函数引用,这个函数事件处理器就是处理响应的地方。
responseText:由服务器返回的响应数据,格式为纯文本字符串。
responseXML:由服务器返回的响应数据,格式为XML节点树构成的对象。
abort():取消请求。
open():准备请求,指定请求的类型、URL和其他细节。
send():传送请求,交给服务器处理。
即使是最基本的Ajax请求,也需要很多javascript代码,因为部分浏览器的不一致。
var request=null;
if(window.XMLHttpRequest){
	try{
		request=new XMLHttpRequest();
	}catch(e){
		request=null;
	}
}else if(window.ActiveXObject){
	try{
		request=new ActiveXObject("Msxm12.XMLHTTP");
	}catch(e){
		try{
			request=new ActiveXObject("Microsoft.XMLHTTP");
		}catch(e){
			request=null;
		}
	}
}
创建XMLHttpRequest对象后,换成设定处理请求的函数,然后开启请求。
request.onreadystatechange=handler;  //服务器响应我们的请求时调用的自定义函数
request.open(type,url,true);    //开启请求,让请求准备发送,同时决定为GET或POST,true决定是异步
GET的话:;request.open("GET","blog.xml",true);
request.send(null);
POST的话:
request.open("POST","addblogentry.php",true);
request.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
request.send("09/26/2008&These dreams just....&cudeapart.png");

自定义的AjaxRequest对象减轻了制作Ajax请求的痛苦过程:
特性
request:底层的XMLHttpRequest对象存储于这个特性里。
方法
getReadyState();
getStatus();
getResponseText();
getResponseXML();
send();             //AjaxRequest中真正的劳动者,它处理开启和传送请求的细节工作
AjaxRequest.prototype.send=function(type,url,handler,postDataType,postData){
	if(this.request!=null){
		//kill the previous request
		this.request.abort();
		
		try{
			this.request.onreadystatechange=handler;   //自定义的处理器函数
			this.request.open(type,url,true);
			if(type.toLowerCase()=="get"){     //发送get请求
				this.request.send(null);
			}else{                      //发送post请求
				this.request.setRequestHeader("Content-Type",postDataType);
				this.request.send(postData);
			}
		}catch(e){
			alert("Ajax error communicating with the server.\n"+"Details:"+e);
		}
	}
}

var ajaxReq=new AjaxRequest();
ajaxReq.send("GET","movies.xml",handleRequest);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值