方法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对象的编程方法。
functioncreateXMLHttpRequest() {
varxmlreq =false;
if(window.ActiveXObject) {
xmlreq=newActiveXObject("Microsoft.XMLHTTP");
}elseif(window.XMLHttpRequest) {
xmlreq=newXMLHttpRequest();
}
returnxmlreq;
}
XMLHttpRequest对象的属性
属性描述
onreadystatechange每个状态改变时都会触发这个事件处理程序,通常会调用一个JavaScript函数。
readyState请求的状态
responseText服务器的响应,表示为一个串
responseXML服务器的响应,表示为XML,这个对象可以解析为一个DOM对象
status服务器的HTTP状态
statusTextHTTP状态的对应文本
XMLHttpRequest对象的一些常用的方法方法描述
abort()停止当前请求
getAllResponseHeaders()把HTTP请求的所有相应首部作为键/值对返回。
getResponseHeader("header")返回指定首部的串值。
open("method","url")建立对服务器的调用。method参数可以是GET、POST或PUT等;url参数可以是相对URL或绝对URL。这个方法还包括3个可选参数。
send(content)向服务器发送请求。
setRequestHeader("header","value")把指定首部设置为所提供的值,在设置任何首部之前必须先调用open()方法。