c:void setRequestHeader(string header, string value)方法
作用:
用来设置请求的头部信息,具体的是为HTTP请求中一个给定的首部设置值。
参数:
header:必选项,要设置的首部。
value:必选项,要在首部中放置的值。
备注:
当readyState值为1时,你可以在调用open()方法后调用这个方法;否则,你将得到一个异常。换言之,这个方法必须在open()之后才能调用,并且如果已经存在已此名称命名的http头,则覆盖之。
e:string getAllResponseHeaders()方法
作用:
获取完整的http头信息,以一个字符串形式返回所有的HTTP请求的所有响应首部,首部包括Content-Length、Date和URI。
参数:无
备注:每个http头名称和值用冒号分割,并以\r\n结束。如果readyState的值不是3或4,则该方法返回null。也即是当send方法完成后才可调用该方法。
f:string getResponseHeader(string header)方法
作用:
返回指定首部的串值。
参数:
header:必选项,表示希望得到的哪一个首部的值。
备注:
仅当readyState值是3或4(换句话说,在响应头部可用以后)时,才可以调用这个方法;否则,该方法返回一个空字符串。也就是当send方法成功后才可调用该方法。
g:void abort()方法
作用:
暂停与一个XMLHttpRequest对象相联系的HTTP请求,从而把该对象复位到未初始化状态。
参数:
无
备注:
调用此方法后,当前请求返回UNINITIALIZED 状态。
嗯,通过上面的总结,相信我们能比较容易的看明白下面的这两段小代码段啦!
1)一份把相关的方法基本都封装全了的XmlHttpRequest对象的JS文件(网上下载的),此JS文件的详细定义如下:
function CallBackObject() { this.XmlHttp = this.GetHttpObject(); } //获得XMLHttpRequest对象 CallBackObject.prototype.GetHttpObject = function() { var xmlhttp; if (!xmlhttp && xmlhttp typeof XMLHttpRequest != 'undefined') { try { if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } } catch (e) { xmlhttp = false; } } return xmlhttp; } //处理服务器响应的回调函数 CallBackObject.prototype.DoCallBack = function(URL) { if( this.XmlHttp ) { if( this.XmlHttp.readyState == 4 || this.XmlHttp.readyState == 0 ) { var oThis = this; this.XmlHttp.open('POST', URL); this.XmlHttp.onreadystatechange = function(){ oThis.ReadyStateChange(); }; this.XmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); this.XmlHttp.send(null); } } } //取消当前响应的回调函数 CallBackObject.prototype.AbortCallBack = function() { if( this.XmlHttp ) this.XmlHttp.abort(); } //服务器已连接时的回调函数 CallBackObject.prototype.OnLoading = function() { // Loading } //请求已接受时的回调函数 CallBackObject.prototype.OnLoaded = function() { // Loaded } //请求处理中的回调函数 CallBackObject.prototype.OnInteractive = function() { // Interactive } //请求已完成,且响应就绪时的回调函数 CallBackObject.prototype.OnComplete = function(responseText, responseXml) { // Complete } //请求未初始化时的回调函数 CallBackObject.prototype.OnAbort = function() { // Abort } //状态异常时的处理函数 CallBackObject.prototype.OnError = function(status, statusText) { // Error } //XMLHttpRequest对象的状态改变时的处理函数 CallBackObject.prototype.ReadyStateChange = function() { if( this.XmlHttp.readyState == 1 ) { this.OnLoading(); } else if( this.XmlHttp.readyState == 2 ) { this.OnLoaded(); } else if( this.XmlHttp.readyState == 3 ) { this.OnInteractive(); } else if( this.XmlHttp.readyState == 4 ) { if( this.XmlHttp.status == 0 ) this.OnAbort(); else if( this.XmlHttp.status == 200 && this.XmlHttp.statusText == "OK" ) this.OnComplete(this.XmlHttp.responseText, this.XmlHttp.responseXML); else this.OnError(this.XmlHttp.status, this.XmlHttp.statusText, this.XmlHttp.responseText); } }
2)改写的一段W3C测试AJAX方法的代码,学习编程最好是理论结合实践自己动手实验一下,说不定能发现许多意想不到的事情!
a:联网的情况下,在浏览器地址栏输入:?f=ajax_async_true
b:然后将下面的代码输入到测试代码的编辑区: