方法beforeSend,用于在向服务器发送请求前添加一些处理函数。这是一个ajax事件,在ajax请求开始之前就被触发,通常允许用户修改XMLHttpRequest对象(比如说设置附加的头部信息)。一般用在提交的数据比较大或者访问服务器的速度比较慢的时候,给可以一些提示,如"正在处理,请等待。。。"
$.ajax({
type:"GET",
url:"a.php",
dataType:"json",
beforeSend:function(XMLHttpRequest){
alert();
}
});
XMLHttpRequest的补充
XMLHttpRequest对象是Ajax技术的核心。在Internet Explorer 5中,XMLHttpRequest对象以ActiveX对象引入,被称之为XMLHTTP,它是一种支持异步请求的技术。后来其他浏览器也提供了XMLHttpRequest类,虽然这些浏览器都提供了XMLHttpRequest类,但它们创建XMLHttpRequest类的方法并不相同。
不刷新页面就和服务器进行交互是Ajax最大的特点。这个重要的特点主要归功于XMLHttpRequest对象。时响应用户与服务器之间的交互,不必进行页面刷新或者跳转,使用户的等待时间缩短,同时也减轻了服务器端的负载。
在使用XMLHttpRequest对象向服务器发送请求和处理响应之前,必修先用JavaScript创建一个XMLHttpRequest对象,然后通过这个对象来和服务器建立请求并接收服务器返回的数据。XMLHttpRequest不是一个W3C标准,所以在不同的浏览器中,XMLHttpRequest对象的创建方式不同,因此在程序中创建XMLHttpRequest对象之前需要对浏览器进行判断。只需要检查浏览器是否提供对ActiveX对象的支持即可。如果浏览器支持ActiveX对象,就可以使用ActiveX来创建XMLHttpRequest对象。否则,就需要在程序中使用本地JavaScript对象技术来创建。下面的代码展示了在不同的浏览器中使用JavaScript代码来创建XMLHttpRequest对象的编程方法。
function createXMLHttpRequest() {
var xmlreq = false;
if (window.ActiveXObject) {
xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
} elseif (window.XMLHttpRequest) {
xmlreq = new XMLHttpRequest();
}
return xmlreq;
}
XMLHttpRequest对象的属性
属性 |
描述 |
onreadystatechange |
每个状态改变时都会触发这个事件处理程序,通常会调用一个JavaScript函数。 |
readyState |
请求的状态 |
responseText |
服务器的响应,表示为一个串 |
responseXML |
服务器的响应,表示为XML,这个对象可以解析为一个DOM对象 |
status |
服务器的HTTP状态 |
statusText |
HTTP状态的对应文本 |
XMLHttpRequest对象的一些常用的方法
方法 |
描述 |
abort() |
停止当前请求 |
getAllResponseHeaders() |
把HTTP请求的所有相应首部作为键/值对返回。 |
getResponseHeader("header") |
返回指定首部的串值。 |
open("method","url") |
建立对服务器的调用。method参数可以是GET、POST或PUT等;url参数可以是相对URL或绝对URL。这个方法还包括3个可选参数。 |
send(content) |
向服务器发送请求。 |
setRequestHeader("header","value") |
把指定首部设置为所提供的值,在设置任何首部之前必须先调用open()方法。 |