XMLHttpRequest

XMLHttpRequest

使用XMLHttpRequest (XHR)对象可以与服务器交互。您可以从URL获取数据,而无需让整个的页面刷新。这使得Web页面可以只更新页面的局部,而不影响用户的操作。XMLHttpRequest在 Ajax 编程中被大量使用。

onreadystatechange 事件

只要 readyState 属性发生变化,就会调用相应的处理函数。这个回调函数会被用户线程所调用。XMLHttpRequest.onreadystatechange 会在 XMLHttpRequest 的readyState 属性发生改变时触发 readystatechange 事件的时候被调用。

  • 属性

XMLHttpRequest.onreadystatechange
当readyState属性发生变化时调用的EventHandler。

XMLHttpRequest.readyState 只读
返回 一个unsigned short 即无符号短整型,请求的状态码。

状态描述
0UNSENT代理被创建,但尚未调用 open() 方法。
1OPENEDopen() 方法已经被调用。
2HEADERS_RECEIVEDsend() 方法已经被调用,并且头部和状态已经可获得。
3LOADING下载中; responseText 属性已经包含部分数据。
4DONE下载操作已完成。

XMLHttpRequest.response 只读
返回ArrayBuffer、Blob、Document、DOMString,具体是哪种类型取决于XMLHttpRequest.responseType的值。其中包含响应体body。

XMLHttpRequest.responseText 只读
返回一个DOMString,该DOMString包含对请求的响应,如果请求未成功或尚未发送,则返回null。

XMLHttpRequest.responseType
定义响应类型的枚举值。

描述
“”将 responseType 设为空字符串与设置为"text"相同, 是默认类型 (实际上是 DOMString)。
“arraybuffer”response 是一个包含二进制数据的 JavaScript ArrayBuffer 。
“blob”response 是一个包含二进制数据的 Blob 对象 。
“document”response 是一个 HTML Document 或 XML XMLDocument ,这取决于接收到的数据的 MIME 类型。请参阅 HTML in XMLHttpRequest 以了解使用 XHR 获取 HTML 内容的更多信息。
“json”response 是一个 JavaScript 对象。这个对象是通过将接收到的数据类型视为 JSON 解析得到的。
“text”response 是包含在 DOMString 对象中的文本。
“moz-chunked-arraybuffer”与"arraybuffer"相似,但是数据会被接收到一个流中。使用此响应类型时,响应中的值仅在 progress 事件的处理程序中可用,并且只包含上一次响应 progress 事件以后收到的数据,而不是自请求发送以来收到的所有数据。在 progress 事件处理时访问 response 将返回到目前为止收到的数据。在 progress 事件处理程序之外访问, response 的值会始终为 null 。
“ms-stream”response 是下载流的一部分;此响应类型仅允许下载请求,并且仅受Internet Explorer支持。

XMLHttpRequest.responseURL 只读
返回响应的序列化URL,如果URL为空,则返回空字符串。

XMLHttpRequest.responseXML 只读
返回一个Document,其中包含该请求的响应,如果请求未成功、尚未发送或不能解析为XML或HTML,则返回null。

XMLHttpRequest.status 只读
返回 unsigned short 即无符号短整型请求响应状态。

XMLHttpRequest.statusText 只读
返回一个DOMString},其中包含HTTP服务器返回的响应状态。与 XMLHTTPRequest.status不同的是,它包括响应状态的整个文本(例如,“200 OK”)。

XMLHttpRequest.timeout
unsigned long 即无符号长整型,表示该请求的最大请求时间(毫秒),超过该时间请求会自动结束。

XMLHttpRequestEventTarget.ontimeout
当请求超时调用的EventHandler。

XMLHttpRequest.upload 只读
XMLHttpRequestUpload,表示上传过程。
可以被绑定在upload对象上的事件监听器如下:

事件相应属性的信息类型
onloadstart获取开始
onprogress数据传输进行中
onabort获取操作终止
onerror获取失败
onload获取成功
ontimeout获取操作在用户规定的时间内未完成
onloadend获取完成(不论成功与否)

XMLHttpRequest.withCredentials
Boolean,用来指定跨域的请求是否应该使用证书(如cookie或授权header头)。

XMLHttpRequest.channel 只读
nsIChannel,对象在执行请求时使用的通道。

XMLHttpRequest.mozAnon 只读
一个布尔值,如果为真,请求将在没有cookie和身份验证header头的情况下发送。

XMLHttpRequest.mozSystem 只读
一个布尔值,如果为真,则在请求时不会强制执行同源策略。

XMLHttpRequest.mozBackgroundRequest
一个布尔值,它指示对象是否是后台服务器端的请求

  • 方法

XMLHttpRequest.abort()
如果请求已经被发送,则立刻中止请求.

XMLHttpRequest.getAllResponseHeaders()
以字符串的形式返回所有用CRLF分隔的响应头,如果没有收到响应,则返回null。

XMLHttpRequest.getResponseHeader(header)
返回包含指定响应头的字符串,如果响应尚未收到或响应中不存在该报头,则返回null。

XMLHttpRequest.open(method, url, async, user, password)
初始化一个请求。该方法只能JavaScript代码中使用,若要在native code中初始化请求,请使用openRequest()。
参数:

参数描述
method要使用的HTTP方法,比如「GET」、「POST」、「PUT」、「DELETE」、等。对于非HTTP(S) URL被忽略。
url一个DOMString表示要向其发送请求的URL。
async 可选一个可选的布尔参数,默认为true,表示要不要异步执行操作。如果值为false,send()方法直到收到答复前不会返回。如果true,已完成事务的通知可供事件监听器使用。如果multipart属性为true则这个必须为true,否则将引发异常。注意:从Gecko 30.0 (Firefox 30.0 / Thunderbird 30.0 / SeaMonkey 2.27)开始,由于对用户体验的负面影响,主线程上的同步请求已不赞成。
user 可选可选的用户名用于认证用途;默认为null。
password 可选可选的密码用于认证用途,默认为null。

XMLHttpRequest.overrideMimeType('text/plain; charset=x-user-defined')
重写由服务器返回的MIME type。

XMLHttpRequest.send()
发送请求。如果请求是异步的(默认),那么该方法将在请求发送后立即返回。

XMLHttpRequest.setRequestHeader(header, value)
设置HTTP请求头的值。您必须在open()之后、send()之前调用setRequestHeader()这个方法。

XMLHttpRequest.sendAsBinary()
send()方法的变体,用来发送二进制数据。

  • 示列
var url = "";
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = "blob";
xhr.setRequestHeader("client_type", "DESKTOP_WEB");
xhr.setRequestHeader("desktop_web_access_key", _desktop_web_access_key);
xhr.onreadystatechange = function() {
	if (this.status == 200) {
		var blob = this.response;
		var img = document.createElement("img");
		img.onload = function(e) {
			window.URL.revokeObjectURL(img.src); 
		}
		img.src = window.URL.createObjectURL(blob);
		$("#imgcontainer").html(img);    
	}
}
xhr.send();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

书香水墨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值