摘要:有以下個(gè)進(jìn)度事件在接收到響應(yīng)數(shù)據(jù)的第一個(gè)字節(jié)時(shí)觸發(fā)。在接收響應(yīng)數(shù)據(jù)期間持續(xù)的觸發(fā)在請(qǐng)求發(fā)生錯(cuò)誤時(shí)觸發(fā)在因調(diào)用方法而終止連接時(shí)觸發(fā)在接收到完整的響應(yīng)數(shù)據(jù)時(shí)觸發(fā)在通信完成或者觸發(fā),,事件后觸發(fā)。
有以下6個(gè)進(jìn)度事件:
loadstart: 在接收到響應(yīng)數(shù)據(jù)的第一個(gè)字節(jié)時(shí)觸發(fā)。
progress: 在接收響應(yīng)數(shù)據(jù)期間持續(xù)的觸發(fā)
error: 在請(qǐng)求發(fā)生錯(cuò)誤時(shí)觸發(fā)
abort: 在因調(diào)用abort() 方法而終止連接時(shí)觸發(fā)
load: 在接收到完整的響應(yīng)數(shù)據(jù)時(shí)觸發(fā)
loadend: 在通信完成或者觸發(fā)error, abort, load事件后觸發(fā)。
現(xiàn)在所有的主流瀏覽器都支持load事件, 前五個(gè)除了IE其他的都支持
load事件下面是使用示例:
xhr.onload = function() { if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304) { alert(xhr.responseText); } else { alert("Request was unsuccessful:" + xhr.status); } }
放到open方法之前。
如:
var xhr = new XMLHttpRequest(); // xhr.onreadystatechange = function () { // if (xhr.readyState == 4) { // if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304) { // console.log(xhr.responseText); // } else { // console.log("error"); // } // } // }; xhr.onload = function () { if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304) { console.log(xhr.responseText); } else { console.log("error"); } }; xhr.open("get", "getexample.php", true); xhr.send(null);
響應(yīng)接收完畢后將觸發(fā)load事件,因此也就沒有必要去檢查readyState屬性了。
progress事件onprogress事件處理程序會(huì)接收一個(gè)event對(duì)象,其target屬性是XHR對(duì)象,但包含著三個(gè)額外屬性:
lengthComputable
position
totalSize
其中l(wèi)engthComputable表示進(jìn)度信息是否可用的布爾值,position表示已經(jīng)接收的字節(jié)數(shù),totalSize表示根據(jù)Content-Length響應(yīng)頭部確定的預(yù)期字節(jié)數(shù)。
根據(jù)這些信息,就可以創(chuàng)建一個(gè)進(jìn)度指示器:
xhr.onprogress = function () { if (event.lengthComputable) { document.getElementById("status").innerHTML = "Received " + event.position + " of " + event.totalSize + " bytes."; } };
要注意的是position已改為loaded;totalSize已改為total。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/78762.html
摘要:并非所有的瀏覽器都完整的實(shí)現(xiàn)了級(jí)的規(guī)范,但是所有的瀏覽器都實(shí)現(xiàn)了它部分的規(guī)范。超時(shí)設(shè)定唯一支持的超時(shí)設(shè)定事件,對(duì)象的事件。方法用于重寫響應(yīng)的類型。它能強(qiáng)迫服務(wù)器返回的數(shù)據(jù)類型給些為本方法提供的類型。 并非所有的瀏覽器都完整的實(shí)現(xiàn)了XMLHttpRequest 2 級(jí)的規(guī)范, 但是所有的瀏覽器都實(shí)現(xiàn)了它部分的規(guī)范。 FormData FormData類型 append()向其添加數(shù)據(jù),...
摘要:由兩部分組成回調(diào)函數(shù)和數(shù)據(jù)?;卣{(diào)函數(shù)是當(dāng)響應(yīng)到來時(shí)應(yīng)該在頁(yè)面中調(diào)用的函數(shù),回調(diào)函數(shù)的名字一般是在請(qǐng)求中指定的。下面是以個(gè)的例子回調(diào)函數(shù)的名字就是是通過動(dòng)態(tài)的元素來使用的,使用時(shí)可以為屬性指定一個(gè)跨域。是為與其他傳遞消息的很相似。 圖像Ping技術(shù) 根據(jù)一個(gè)網(wǎng)頁(yè)可以從任何網(wǎng)頁(yè)中加載圖像而不用擔(dān)心使用跨域的原理, 我們可以動(dòng)態(tài)的創(chuàng)建圖像, 使用他們的onload和onerror事件處理程序...
摘要:在中,對(duì)象是通過庫(kù)中的對(duì)象實(shí)現(xiàn)的。可以檢測(cè)對(duì)象的屬性,該屬性表示請(qǐng)求響應(yīng)過程的當(dāng)前活動(dòng)階段。已經(jīng)調(diào)用但尚未接收到響應(yīng)接收。由于內(nèi)存原因,不建議重用對(duì)象。頭部信息對(duì)象提供了操作請(qǐng)求頭部和響應(yīng)頭部信息的方法。建議使用自定義的頭部名稱。 在IE5中,XHR對(duì)象是通過MSXML庫(kù)中的ActiveX對(duì)象實(shí)現(xiàn)的。在IE中可能會(huì)遇到三種不同版本的XHR對(duì)象,即MSXML2.XMLHttp、MSXML...
摘要:注意請(qǐng)求和響應(yīng)都不包含信息。對(duì)象的安全機(jī)制部分實(shí)現(xiàn)了的規(guī)范。請(qǐng)求返回后會(huì)觸發(fā)事件,響應(yīng)數(shù)據(jù)保存在屬性中。無論是同源請(qǐng)求還是跨域請(qǐng)求,對(duì)于本地資源最好使用相對(duì),在訪問遠(yuǎn)程資源時(shí)再使用絕對(duì)。發(fā)送請(qǐng)求之后,服務(wù)器決定是否允許這種類型的請(qǐng)求。 通過XHR實(shí)現(xiàn)Ajax通信的一個(gè)主要限制,來源于跨域安全策略。在默認(rèn)情況下,Ajax只能訪問與包含它的頁(yè)面位于同一個(gè)域中的資源。但是有時(shí)也需要一些跨域的...
摘要:頁(yè)面發(fā)起一個(gè)到服務(wù)器的請(qǐng)求,然后服務(wù)器一直保持連接打開,直到有數(shù)據(jù)可發(fā)送。 Ajax與Comet XMLHttpRequest對(duì)象 IE5是第一款引入XHR對(duì)象的瀏覽器,在IE5中,XHR對(duì)象是通過MSXML庫(kù)中的一個(gè)ActiveX對(duì)象實(shí)現(xiàn)的 //適用于 IE7 之前的版本 function createXHR(){ if (typeof arguments.callee.acti...
閱讀 1393·2021-09-24 10:26
閱讀 3701·2021-09-06 15:02
閱讀 665·2019-08-30 14:18
閱讀 601·2019-08-30 12:44
閱讀 3141·2019-08-30 10:48
閱讀 1971·2019-08-29 13:09
閱讀 2027·2019-08-29 11:30
閱讀 2309·2019-08-26 13:36